4

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

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

4

2 回答 2

3

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

于 2013-06-17T17:34:52.483 回答
0

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

name 如果您仍然收到相同的错误,请根据此处的文档检查您的 Post 模型是否具有该属性。

于 2020-09-27T18:13:13.333 回答