js.erb文件获胜't控制器中响应后的负载

js.erb file won't load after respond_to in controller

本文关键字:控制器 响应 负载 文件 erb 获胜 js      更新时间:2023-09-26

我的视图中需要两个按钮,但只有一个应该使用remote,所以我决定以以下方式使用链接和提交按钮:

视图

  <%= form_for(@new_word , :url => {:action => "create"}) do |f| %>
  ... skipped code  ...
  <%= link_to("build word", '#', :class => "build", "data-button" => "build") %>
   ... skipped code ...
  <div id="build_name"></div>
  <%= submit_tag l(:btn_save), :name => 'btn_save' %>
  <% end %>

 <script type="text/javascript">
  jQuery(".build").click(function(){
        var form_value = jQuery('#new_nc_project').serialize();  
        var button = $(this).data("button");    
        var content = $('#nc_project_keyword_tokens').val(); 
        if(button == "build"){
          $.ajax({
            type:'POST', 
            url: '<%= url_for :action => 'build' %>', 
            data: $.param({keyword_tokens: content})
          });
        }
     });
 </script>

控制器

def build
@response = {resp: "text"} //just example text for testing
respond_to do |format|
  format.json { render json: @response }
  format.js   { render js: @response }
end

结束

build.js.erb

$('#build_name').append('<p><%= @response[:resp] %></p>');

如果我查看我的服务器控制台,我看不到"build.js.erb"文件中的任何列表。

我做错了什么,有没有其他方法可以让"@response"在视图中可见?

谢谢,点

要渲染build.js.erb,您应该执行此

respond_to do |format|
  format.json { render json: @response }
  format.js # this will render build.js.erb by default.
end