我有一个非常简单的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 %>
答案 0 :(得分:3)
我相信您的问题是您的控制器中尚未定义方法name_cont
。我相信这里发生的事情是搜索表单获得了一个没有name_cont
定义的对象,这就是你得到这个错误的原因。我的建议是定义一个用于搜索帖子的变量名称。
答案 1 :(得分:0)
首先,您需要使用Ransask的辅助方法来创建表单,form_for
现在为search_form_for
。
如果仍然遇到相同的错误,请检查Post模型是否具有属性name
according to the documentation here。