轨道上的红宝石 - 参数错误 表单中的第一个参数不能包含 nil 或对于搜索表单为空



我正在添加查询折叠,但是在添加代码时,我收到指向行<%= form_for @search, :class => 'content' do |f| %>First argument in form cannot contain nil or be empty错误

我用用户和搜索控制器更新了帖子,以获得更好的外观。

索引.html.rb:

 <%= render 'searches/new' %>
/

searches/_new.html.erb:

<%= form_for @search do |f| %>
<div class="field">
  <%= f.label :gender %><br />
  <%= f.select :gender, ['male', 'female'], :include_blank => true %>
</div>
  <div class="field">
    <%= f.label :state %><br />
    <%= f.text_field :state %>
  </div>
  <div class="actions"><%= f.submit "Search" %></div>
<% end %>

原始源代码:

<div class="layer1">
<p class="heading">Header-1 </p>
<div class="content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit orem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

用户控制器:

  def settings
    @user = User.find(params[:id])
  end
  def new
    @user = User.new
  end
  def show
    @user = User.find(params[:id])
  end
    def edit
      @user = User.find(params[:id])
end
  def index
    @users = User.all
  end

搜索控制器:

  def new
    @search = Search.new
  end
  def create
    @search = Search.new(params[:search])
    if @search.save
      redirect_to @search
    else
      render 'new'
    end
  end
  def show
    @search = Search.find(params[:id])
    @users = @search.users
  end
end

错误:

表单中的第一个参数不能包含 nil 或为空错误 指向行 <%= form_for @search, :class => 'content' do |f|%>

表示@search为零。在加载此视图之前,请确保在控制器的相关操作中设置它。由于您尚未共享控制器特定代码,因此很难确定设置@search实例变量的确切位置。

更新

在用户控制器#索引中添加@search

  def index
    @users = User.all
    @search = Search.new
  end

views/users/index.html.erb中的呈现调用更新为

<%= render partial: 'searches/new', locals: {search: @search} %>

此外,在您的部分views/users/searches/_new.html.erbform_for更新为

<%= form_for search do |f| %>

最新更新