使js.erb文件在没有ajax Ruby on Rails 4的情况下工作

时间:2015-10-14 12:49:21

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

我有一个观点
index.html.erb - >
0.95.3

控制器 - >客户

link_to "click me " , 'customers/index' , :remote => true

index.js.erb的

def index
end

alert('in js file'); 绝对正常。但是,如果我不想制作ajax,我只想在每次加载客户/索引时使用js.erb文件。我是alert开发的新手,我的问题可能非常基本,但我找不到解决方案。我知道当我们想要特定类型时,我们指定以下内容。但据我所知,我的情况是不同的

rails

2 个答案:

答案 0 :(得分:1)

您只需将代码从index.js.erb移至index.html.erb

即可

如果你想单独保存它,那么你可以将js代码移动到局部并在index.html.erb内渲染它。请参阅文档here

<强>更新

如何使用partial进行此操作:

  1. 创建_yourpartial.js.erb并填写js代码
  2. 在#index; index.html.erb&#39;内部呈现代码添加:<%= render partial: 'yourpartial', formats: [:js] %>
  3. (但当然你仍然需要围绕js代码的脚本标签)

答案 1 :(得分:-1)

我试着帮助你。您可以将ajax放入application.js。为了使其清洁,您必须在文档就绪中创建一个功能。当页面已经完成加载时,文档就绪功能将处于活动状态。

$( document ).ready(function() {
    callAjaxCustomerIndex(location.pathname);
});

function callAjaxCustomerIndex(current_url) {
  if (current_url == "/customers")
    $.ajax({
        url: "/customers",
        async: false,
        method: "GET",
        data: { "place_id" : place["place_id"] },
        success: function(data){
                 alert('success');
             }
         });
         infoWindow.open(map, marker);
         buildIWContent(place);
    });
}

location.pathname是&#34;客户&#34;时,将发送此ajax请求。我希望这能帮到你。