【问题标题】:undefined method `name_cont' for Ransack::Search<class: error?Ransack::Search<class: 错误的未定义方法“name_cont”?
【发布时间】:2013-06-13 17:52:22
【问题描述】:

我有一个非常简单的 Rails 应用程序,我想在上面使用 Ransack 搜索。

我收到以下错误:

  undefined method `name_cont' for Ransack::Search<class: Post, base: Grouping     
  <combinator: and>>:Ransack::Search

我只需要基础知识,并按照我的帖子控制器和帖子索引页面中的说明输入以下代码:

帖子控制器:

def index
  @q = Post.search(params[:q])
  @posts = @q.result(:distinct => true)

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @posts }
  end
end

索引视图:

<%= search_form_for @q do |f| %>
  <div class="field">
    <%= f.label :name_cont, "Name contains" %>
    <%= f.text_field :name_cont %>
  </div>
  <div class="actions">
    <%= f.submit "Search" %>
  </div>
<% end %>

【问题讨论】:

    标签: ruby-on-rails search


    【解决方案1】:

    我相信您的问题是方法 name_cont 尚未在您的控制器中定义。我相信这里发生的事情是搜索表单获得了一个没有定义 name_cont 的对象,这就是您收到此错误的原因。我的建议是定义一个变量名来搜索帖子。

    【讨论】:

    • 这不是简单定义一个名为name_cont的方法的情况。按照惯例,Ransack 要求您创建诸如&lt;attr&gt;_cont 之类的字段。请参阅the railscastPost 模型必须包含一个名为 name 的属性。
    • 我也有类似的问题,'title_cont' 出现未定义的方法错误。请帮我解决这个问题?
    【解决方案2】:

    首先,您需要使用 Ransask 的辅助方法创建表单,form_for 现在是 search_form_for

    如果您仍然收到相同的错误,请检查您的 Post 模型是否具有属性 name according to the documentation here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多