【发布时间】:2012-05-18 09:51:01
【问题描述】:
首先,我是 RoR 的新手,所以答案可能很明显,在这种情况下,我深表歉意。我环顾四周,没有发现任何有用的东西。
我正在尝试在我的应用程序的每个网页的标题处设置一个搜索表单,该表单将搜索我所有“存储桶”的名称。以下是相关代码:
在 app/views/layouts/_header.html.erb 中(在导航栏中):
<% search_form_for @q do |f| %>
<%= f.label :name_cont %>
<%= f.text_field :name_cont %>
<%= f.submit %>
<% end %>
在 app/controllers/buckets_controller.rb 中:
def index
unless params[:q].blank?
@q = Bucket.search(params[:q])
@buckets = @q.result.paginate(:page => params[:page])
else
@buckets = Bucket.find(:all, :limit => 5).paginate(:page => params[:page])
end
end
我知道最后一部分不是那么好:我想要做的是,如果我只是访问存储桶索引页面(而不是通过搜索),我会显示 5 个最近创建的存储桶。当我在标题表单中搜索某些内容时,我会访问索引页面,但只显示命中搜索的存储桶。 (将搜索页面与我的索引页面分开是否有更好的处理方法?)
我发现 this issue 几乎相同,但我仍然不知道如何处理 @q 如果每个页面上都有表单——当然我不必更改每个控制器的每一个动作?
对不起,我的笨拙是因为你的任何挫折!
【问题讨论】:
-
我浏览了推荐的记录,但没有运气。可以分享一下你的答案吗
-
@Vezu 查看新答案。
标签: ruby-on-rails ruby-on-rails-3 model-view-controller ruby-on-rails-3.1 ransack