如果控制器操作结果为nil,如何加载不同的js文件

时间:2013-10-15 19:21:32

标签: javascript ruby-on-rails ruby-on-rails-3

这是我的控制器动作: *控制器/ books_controller.rb *

def search_book
        @found_book = Book.find_by_token(params[:token_no])

        #once found I am rendering my search_book.js.erb file (with UJS) 
         respond_to do |format|
           format.js
         end
 end

这是我的js文件来改变我的html内容:views / books / search_book.js.erb

  $("#found_book").html("<%= escape_javascript( render(:partial => "book_view") ) %>");

如果我的书成功找到,那么通过UJS渲染部分。(完成)

让我们说如果找不到我的书,即@ found_book.nil?是真的。 在那种情况下,我想为我的div“found_book”渲染另一个部分。怎么做?

1 个答案:

答案 0 :(得分:3)

请记住,search_book.js.erb仍然是erb,因此您可以评估您的实例变量并使用条件来渲染您选择的部分。

<%- if @found_book.nil? %>
  $("#found_book").html("<%= escape_javascript( render(:partial => "no_book_view") ) %>");
<%- else %>
  $("#found_book").html("<%= escape_javascript( render(:partial => "book_view") ) %>");
<% end %>