rails部分渲染html不运行javascript

时间:2017-12-06 20:43:56

标签: javascript ruby-on-rails ruby

嗨我从控制器文件调用部分,但部分内的javascript没有执行。部分是.html.erb格式。

<% content_for :javascript do %>

  <script type="text/javascript">
    var eventName = typeof(Turbolinks) !== 'undefined' ? 'page:change' : 'DOMContentLoaded';

    document.addEventListener(eventName, function() {
      console.log("hello");


      <% if flash[:notice] %>
        ShopifyApp.flashNotice("<%= escape_javascript flash[:notice].html_safe %>");
      <% end %>

      <% if flash[:error] %>
        ShopifyApp.flashError("<%= escape_javascript flash[:error].html_safe %>");
      <% end %>
    });
  </script>
<% end %>

是部分

的代码
 respond_to do |format| 
    if @timer.save



      flash[:notice]="updated"
      format.html{render :partial => "layouts/flash_messages", :locals => {:flash => flash}}





    else
        flash[:error]="error"
      format.html{render :partial => "layouts/flash_messages", :locals => {:flash => flash}}
    end

是控制器代码。

1 个答案:

答案 0 :(得分:2)

如果你想在rails中使用以下方法渲染Javascript。

控制器代码如下所示:

def create
  @user = User.find(params[:id])
  respond_to do |format|
    format.html {redirect_to @user }
    format.js
  end
end

模板此代码将呈现为。

filename:create.js.erb

 $("#someidname").html("<%= @user.email %>");

注意@user也可以在这里找到。你可以渲染其他部分也像:

$("#someit").html("<%= escape_javascript(render('users/email')) %>");

另外,请确保您要发送ajax请求。