ajax coffeescript请求 - 获得参数

时间:2014-03-22 01:04:21

标签: jquery ruby-on-rails ajax coffeescript

我使用rails构建了一个演示应用,我有一堆数据行,附有按钮。单击该按钮会向控制器发送delete请求,当它返回成功时,我想使用jQuery从页面中删除该行。

ajax请求的推荐coffescript工作正常 - 但我想知道如何访问请求中发送的参数:

$("a[data-remote]").on "ajax:success", (e, data, status, xhr) ->
if data.status == 'success' 
    console.dir(data) // stuff is printed, results are returned
    // do stuff 

所以我从控制器那里得到了函数完成的消息,我想通过点击按钮的ID来更新页面元素。

但除非我修改发回的数据以包含最初在GETdelete请求中发送的数据(这似乎不必要且效率低下),否则我不知道如何访问到首先发送的原始元素的ID!

如何访问原始请求中发送的ID?

1 个答案:

答案 0 :(得分:0)

纯粹的Rails方法是在.js.erb目录中加入views文件:

#app/controllers/your_controller.rb
respond_to :html, :js

def action
   @id = params[:var][:id]
   respond_with @id
end

#app/views/controller/action.js.erb
alert("<%=j @id %>");

如果您想使用ajax:success回调,那么您最好做这样的事情:

#app/views/controller/view.html.erb
<%= link_to "link", link_path, remote: true, data: { type: "json" } %>

#app/controllers/your_controller.rb
def action
   @message = { id: params[:var][:id], message: "message" }
   respond_to do |format|
      format.html
      format.json { render json: @message.to_json }
   end
end

#app/assets/javascripts/application.js
$("a[data-remote]").on "ajax:success", (e, data, status, xhr) ->
    var info = JSON.parse(data);
    alert(info.message);