Rails 3使用jquery生成ajax并执行.js.erb

Ton*_*ony 0 javascript ruby ajax jquery ruby-on-rails-3

我有以下haml代码:

%input{:value => "", :type => "button",:class => "SendBtn", :onclick => "$.get('#{send_path}',{parameter:$('#parameter').val()}); "}
Run Code Online (Sandbox Code Playgroud)

此输入在控制器中执行事件.

// This is my controller
def send

    if request.xhr?
        // do stuff
    end
end
Run Code Online (Sandbox Code Playgroud)

但我的相应.js.erb文件中的js代码没有被执行.它作为get请求的响应返回.

// send.js.erb
alert('hello');
Run Code Online (Sandbox Code Playgroud)

rails如何执行此代码?

top*_*pek 5

你的问题不是Rails相关的,它是jQuery.使用该get方法,您只需获取或多或少的纯文本.这不会被执行.你可以eval在文本上做一个但有更好的方法.使用getScriptjQuery中方法.这将获取并执行您的代码.

作为旁注,在您的代码中有两件事困扰着我:

  1. 您正在使用内联JavaScript.尝试通过使用data-发送路径的属性(如下所示)删除data: { sendPath: send_path }它,并$(yourInput).data('sendPath')application.js文件中检索它.
  2. 从我个人的观点来看,我不喜欢在ERB模板中执行JavaScript代码.我发现这会破坏我的应用程序的前端逻辑.对我来说,将逻辑放在.js文件中并通过JSON与服务器通信效果更好.