用于Ransack :: Search的未定义方法`name_cont'

时间:2013-06-17 17:21:26

标签: ruby-on-rails search

我有一个非常简单的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 %>

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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