【发布时间】:2016-04-17 00:04:46
【问题描述】:
我有一个用户列表,我想通过单击同一行上的“删除”链接来删除元素。
观看次数:
# users/index.html.erb
<ul class="users">
<%= render @users %>
</ul>
# users/_user.html.erb
<li id="user-<%= user.id %>">
<%= link_to user.email, user %>
<% if current_user.admin? %>
<%= link_to "delete", user, remote: true, method: :delete, data: { confirm: "You sure?" } %>
<% end %>
</li>
用户控制器:
# users_controller.rb
def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted"
respond_to do |format|
format.html { redirect_to users_url }
format.js
end
end
删除列表元素的javascript是:
# users/destroy.js.erb
$("li#<%= user.id %>").remove();
点击时什么都没有发生,但在页面刷新时资源被正确销毁。检查服务器的 LOG 我看到以下错误:
在 40 毫秒内完成 500 次内部服务器错误(ActiveRecord:5.0 毫秒)
ActionView::Template::Error(未定义的局部变量或方法
user' for #<#<Class:0x0000000851d300>:0x00000008e8e7e0>): 1: $("li#<%= user.id %>").remove(); app/views/users/destroy.js.erb:1:in_app_views_users_destroy_js_erb___2066095411338793994_74738360'
app/controllers/users_controller.rb:46:in `destroy'
能否请您帮助我了解错误在哪里以及为什么“用户”未定义?谢谢
编辑
我知道这个问题有很多问答类似,我实际上是根据这些问题构建我的代码。尽管如此,我还是被困住了,我需要支持。请不要将问题标记为重复。
【问题讨论】:
标签: javascript ruby-on-rails ajax