我要做的是添加一个简单的搜索到一个' show'查看我的rails应用程序。我已经看到了关于简单搜索的轨道,它给了我一些好的方向,但我似乎无法让它与我的情况一起工作。我只是有一个常见问题解答列表,并希望为“问题”提供搜索过滤器。
这是我的观点/来宾/ show.html.erb
<%= form_tag faq_search_guests_path, method: :get, remote: true, :id => "faq_search_form" do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
<div id="faq-search-test"></div>
<% @faqs.each do |f| %>
<h4>Question</h4>
<%= f.question %>
<h4>Answer</h4>
<%= f.answer %>
<% end %>
这里是最初设置@faqs的控制器/ guests_controller.rb方法
def show
@guest = Guest.find(params[:id])
@hotel = Hotel.find(params[:hotel_id])
@faqs = Faq.where(hotel_id: @hotel.id)
@template = Template.where( hotel: @hotel.id )
@visit = Visit.where("hotel_id = ? AND guest_id = ?", @hotel.id, @guest.id).last
@visit = Visit.find(params[:visit_id]) if params[:visit_id] && (@visit.hotel_id == @hotel.id)
unless current_user.hotels.include?(@hotel)
render :file => "public/401.html", :status => :unauthorized
end
端
这是我的控制器/ guests_controller.rb我的表单调用的自定义方法
def faq_search
@faq_result = Faq.search(params[:search])
render :nothing => true
end
这是我的routes.rb
resources :guests do
get 'faq_search', :on => :collection
end
resources :faqs
这是我的模特/ faq.rb
def self.search(search)
if search
where('question LIKE ?', '%#{search}%')
else
scoped
end
end
所以从这里开始,我无法在show.html.erb中显示@faq_result。我想我不知道如何从视图中的自定义控制器方法访问实例变量。
任何帮助都会受到很多关注:)!