我使用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来更新页面元素。
但除非我修改发回的数据以包含最初在GET
或delete
请求中发送的数据(这似乎不必要且效率低下),否则我不知道如何访问到首先发送的原始元素的ID!
如何访问原始请求中发送的ID?
答案 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);