从Rails 4中的任何控制器渲染不同的视图

时间:2015-04-13 04:48:36

标签: ruby-on-rails ruby-on-rails-4

我有两个模特,书和课程。在books_controller中,我有一种按ISBN搜索书籍的搜索方法。

def searchbook
  @searchedbook = Book.find_by_isbn(params[:q])
end

索引页面中有一个显示所有书籍的输入字段。所以我的index.html.erb有这个:

=form_tag({controller: "books", action: "searchbook"}, :method => :get) do
 .search_field
   %p
    Search Using ISBN:
   =text_field_tag :q
   =button_tag 'Go' , class: 'search-button' , type: :submit
%br

我已将此添加到我的路线中:

match 'searchbook', to: 'books#searchbook', via: :get

我刚刚意识到我的searchbook.html.erb与show.html.erb完全相同。如何让show.html.erb从searchbook中呈现结果

3 个答案:

答案 0 :(得分:1)

由于您对搜索工作簿页面查看和表单提交采取了相同的操作,因此您需要在网址q操作中检查参数searchbook。因此,无论何时提交表单,它都会附加参数q@searchedbook

def searchbook
  @searchedbook = Book.find_by_isbn(params[:q]) if params[:q].present?
end

searchbook.html.erb

-if @searchedbook
  = render "show" # render the show partial

答案 1 :(得分:0)

这是partials的目的。

答案 2 :(得分:0)

使用searchbook.html.erb中的部分内容,例如render "show"