【问题标题】:How to Load a different js file if controller action result is nil如果控制器操作结果为零,如何加载不同的 js 文件
【发布时间】:2013-10-15 19:21:32
【问题描述】:

这是我的控制器操作: *controller/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”渲染另一个部分。该怎么做?

【问题讨论】:

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


    【解决方案1】:

    请记住,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 %>
    

    【讨论】:

    • 啊啊!我只是错过了它,很简单的解决方案!你击中了目标:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多