Ruby on rails Rails 4链接_销毁在入门教程中不起作用
我正在学习入门教程(创建博客),要销毁的链接无法正常运行。在航站楼里,它总是把它解释为“秀” 在阅读类似的文章时,我了解到删除内容必须转换为帖子,以便浏览器对其进行解释。这似乎没有发生 我在Lynda.com Rails课程中使用Destroy也遇到了同样的问题,因此我相信这是我开发环境中的一个问题。我在MacBookPro Lion的HTTP服务器上使用Rails 4、Ruby 2.00p274、MySQL和WEBrick 在选择销毁时的终端会话中:Ruby on rails Rails 4链接_销毁在入门教程中不起作用,ruby-on-rails,Ruby On Rails,我正在学习入门教程(创建博客),要销毁的链接无法正常运行。在航站楼里,它总是把它解释为“秀” 在阅读类似的文章时,我了解到删除内容必须转换为帖子,以便浏览器对其进行解释。这似乎没有发生 我在Lynda.com Rails课程中使用Destroy也遇到了同样的问题,因此我相信这是我开发环境中的一个问题。我在MacBookPro Lion的HTTP服务器上使用Rails 4、Ruby 2.00p274、MySQL和WEBrick 在选择销毁时的终端会话中: Started GET "/posts/4
Started GET "/posts/4" for 127.0.0.1 at 2013-08-09 13:45:20 -0600
Processing by PostsController#show as HTML
Parameters: {"id"=>"4"}
Post Load (0.6ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", "4"]]
Rendered posts/show.html.erb within layouts/application (0.4ms)
Completed 200 OK in 13ms (Views: 8.6ms | ActiveRecord: 0.6ms)
在ports-controller.rb中:
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to action: :index
end
在index.html.erb中:
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.text %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', { action: :destroy, id: post.id }, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
2013-08-09 13:45:20-0600时127.0.0.1版的开始获取“/posts/4”
这就是问题所在。即使您在链接中使用了方法:delete
,删除链接仍在使用GET-http动词
试试这个
<%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %>
我正好遇到了这个问题,它是由三次单击指南的代码块并将代码直接复制/粘贴到我的编辑器(OSX上的ST2)中引起的 您应该检查为链接生成的HTML是否如下所示:
<a data-confirm="Are you sure?" data-method="delete" href="/posts/3/comments/3" rel="nofollow">Destroy Comment</a>
如果没有,但看起来如下所示,则不会应用Javascript:
<a href="/posts/3/comments/3" data="{:confirm=>"Are you sure?"}" method="delete">Destroy Comment</a>
href
和未解析的Ruby之间的较大间隙是由于将指南中使用的不间断空格(unicode字符\u00a0
)复制到脚本中造成的
我不确定这为什么不会导致脚本分析错误。确保gem'jquery rails'在gemfile中,jquery_ujs包含在app/assets/javascripts/application.js文件中
//= require jquery
//= require jquery_ujs
来源:我和巴里有同样的问题。确保您在/app/views/index.html.erb文件中正确复制/粘贴,并检查呈现的html。我也遇到了同样的问题,并意识到我创建的rails应用程序使用了
-J
,与--跳过javascript
相同。
您需要启用JavaScript才能使其正常工作;缺少确认删除的弹出窗口是一个致命的缺陷。确保您有一个通过rake路由的删除REST方法
DELETE /articles/:id(.:format) articles#destroy
我有同样的问题,只有在这个博客版本,因为我正在做这两个。
我还试图学习如何使用网络控制台,并在其中窥探。
我的问题是binding.pry不会显示在destroy方法中,但会显示在show中。这告诉我这一定是个坏链接,对吧?它甚至还没有达到毁灭的方法。谢谢大家的回答。我们必须尝试一下,不是吗?
尝试
对那个人不起作用
这是他所拥有的
<td><%= link_to 'Destroy', [comment.post, comment], :confirm => 'Are you sure?', :method => :delete %></td>
“你确定吗?”,:method=>:delete%>
因为你只想删除这里的评论
但是,将下面这样的内容组合在一起不会产生错误,但是我仍然没有从控制器中的destroy方法中获得binding.pry
<td><%= link_to 'Destroy', [comment.post, comment], method: :delete, data: { confirm: 'Are you sure?' } %></td>
而且我从来没有像你期望的那样得到确认
所以一定要设法弄清楚jquery作为嫌疑犯到底发生了什么。
我可以确认这是我的情况,但剩下的我将前往nubes,因为这将出现在谷歌搜索中。我也遇到了同样的问题,rails 4.2.X。检查了我的所有javascript文件,但无法使其正常工作。如果仔细查看服务器请求,参数中将缺少“Authentity\u token”,因此用户将注销。
在rails 4.1和更高版本中,您必须使用而不是链接到我也遇到了同样的问题。在我的例子中,我有一个来自的change\app\views\layouts\application.html.erb文件
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
true%>
正确%>
到
true%>
正确%>
为了避免我的第一个Rails问题。但它显然破坏了JavaScript的执行,并导致了销毁问题。
因此,请将\app\views\layouts\application.html.erb文件回滚到其原始状态,并按此处所述处理此问题
在evedovelli回答中(关于windows中的coffeescript gem)。在js中包括以下行
//= require jquery_ujs
包括创业板:
gem 'jquery-rails'
销毁链接:
<%= link_to "Logout", destroy_user_session_path %>
我也遇到了同样的问题。我这样做: 我的环境。是: A.ruby 2.2.4p230(2015-12-16修订版53155)[x64-W32] B.轨道4.2.5 C.浏览器:Firfox 44.02
跳过\u后再执行操作:验证\u真实性\u令牌
到控制器,以防止AdsController中的InvalidAuthenticationToken#销毁
现在,我可以使用link_从我的页面中删除一条记录我通过添加assets/javascripts/application.js解决了这个问题
//= require jquery_ujs
使用
按钮链接到
方法而不是链接到
似乎是可行的,但事实上它没有确认(我觉得这很重要)
在我的例子中,我使用的是react on rails,并且有多个布局
将
添加到我的hello world版面中修复了这个问题。显示您的版面/application.html.erb和app/assets/application.js。您必须使用新Rails应用程序中默认包含的jquery\u ujs
库,以使:delete
方法按预期发布到端点。@ssualallen:将其作为答案发布!我遇到了完全相同的问题,给出的答案也没有帮助,但将jquery_ujs包含到文件application.js
中确实为我解决了这个问题。也许这只是迁移时的一个问题……可能是重复的,您希望这有什么帮助?正如我所说的-试试!我没说这是100%的答案。从给出的信息很难得出结论。也许作者应该检查一下他的浏览器。我想JavaScript已经关闭了。但这样写肯定是一种糟糕的做法,因为它健壮且容易出错,很难调试和维护。我完全困惑=)@MarekLipkaWhile
gem 'jquery-rails'
<%= link_to "Logout", destroy_user_session_path %>
//= require jquery_ujs