我是ruby on rails的新手,我正在尝试构建reddit克隆。我正试图在每一页上用洗劫搜索栏来呈现导航栏,它对索引页很好;但是当我点击任何其他页面时都会出现错误,因为search_form_for需要数据。我希望用户在每个页面上都能看到搜索栏,但";搜索";是可选的,因此用户仍然可以从一页移动到另一页。英语是我的第二语言,我希望这是有道理的。
在_main_nav.html.erb:中
<%= search_form_for @q do |f| %>
<%= f.label :title_cont %>
<%= f.search_field :title_cont %>
<%= f.submit %>
<% end %>
在subs_controller.rb:中
def index
@q = Sub.ransack(params[:q])
@subs = @q.result
end
只需添加一个条件即可检查参数是否存在:
def index
@subs = if params[:q].present?
@q = Sub.ransack(params[:q])
@q.result
else
Sub.all
end
end