Jam*_*les 39 ruby-on-rails ruby-on-rails-3
我正在使用Rails 3,并且有一个页面可以输出数据库中的帖子列表.我希望能够从链接中删除帖子.
下面的第二个例子有效,但第一个没有.谁知道为什么第一个不起作用?我的观点包含:
# this link sends a "GET" request which asks for the #show function
<%= link_to 'Delete', post, :method => :delete %>
# this link sends the proper "DELETE" request which asks for the #destroy function
<%= button_to 'Delete', post, :method => :delete %>
Run Code Online (Sandbox Code Playgroud)
我的路线文件包含以下内容:
resources :posts
Run Code Online (Sandbox Code Playgroud)
von*_*rad 48
确保<head>布局中的部分包含以下内容:
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
Run Code Online (Sandbox Code Playgroud)
在Rails 3中,正在使用JavaScript处理删除请求,以确保正确发送请求.如果您没有csrf元标记和所需的JavaScript代码,则删除链接将不起作用.该:defaultsJavaScript文件包括-等等-的prototype.js和application.js中.后者包含使链接起作用的东西,但依赖于Prototype框架.
如果您不想使用默认的Prototype JavaScript库,那么有几个其他框架的application.js端口.例如,你可以在这里找到jQuery .
无论JavaScript如何,按钮仍然可以工作,因为生成的HTML代码button_to本身包含所有必要的信息.这就是为什么你看到按钮工作而链接不工作的原因.
ali*_*ikk 17
好像
<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)
不再受支持
相反,你应该使用
<%= javascript_include_tag 'application' %>
Run Code Online (Sandbox Code Playgroud)
我在Rails 5.2.3中遇到了同样的问题,这对我有所帮助:
布局头:
<%= javascript_include_tag "rails-ujs" %>
Run Code Online (Sandbox Code Playgroud)
配置/初始化器/资产
Rails.application.config.assets.precompile += %w( rails-ujs.js )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14753 次 |
| 最近记录: |