rails 3 - link_to以销毁无法正常工作

Ale*_*lex 37 ruby-on-rails ruby-on-rails-3

我正在尝试创建一个销毁链接到我的用户控制器,我也在使用设计.

这是我的代码 -

视图

<%= link_to 'Delete User?', child, :confirm => "Are you sure you want to delete #{child.full_name}?", :method => :delete, :class => "user-additional", :style => "font-size:12px;font-weight:normal;" %>
Run Code Online (Sandbox Code Playgroud)

调节器

def destroy
 if @user = User.find(params[:id])
  @user.destroy
  respond_to do |format| 
    format.html { redirect_to account_index_path } 
    format.xml { head :ok } 
  end
 end
end
Run Code Online (Sandbox Code Playgroud)

路线

devise_for :users 
resources :users, :except => [:new]
Run Code Online (Sandbox Code Playgroud)

该链接转换为localhost:3000/users/10

单击此按钮将打开用户显示而不是删除它们

有任何想法吗 ?

Oma*_*shi 64

破坏性行为应作为表格提交执行 - http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist

使用button_to(传递a :method => :delete)代替并适当地设置按钮的样式.


Jay*_*ayX 27

实际上我昨天遇到了完全相同的问题

试试这个:

<%= button_to "delete", your_object, :method=>:delete, :class=>:destroy %>
Run Code Online (Sandbox Code Playgroud)

它起作用(至少对我来说)


Flo*_*rin 9

如果您使用的是jQuery而不是Prototype,则可能缺少javascript文件.

您可以从jquery-ujs GitHub页面或Railscasts的第205集中找到有关如何将其添加到项目的详细信息.


Dan*_*man 6

猜测我认为这是因为在Rails 3中,不显眼的javascript现在用于此类功能(Rails 2会为您的代码输出一堆令人讨厌的内联javascript,Rails 3将javascript放在外部文件中,并使用HTML5 data-要与之交互的属性.)

要解决此问题,您需要<%= csrf_meta_tags %>在页眉中包含引用外部JavaScript.它还涉及XSS问题.

这里有一些细节:删除链接在Rails 3视图中发送"Get"而不是"Delete"