Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4链接_销毁在入门教程中不起作用_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails 4链接_销毁在入门教程中不起作用

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

我正在学习入门教程(创建博客),要销毁的链接无法正常运行。在航站楼里,它总是把它解释为“秀”

在阅读类似的文章时,我了解到删除内容必须转换为帖子,以便浏览器对其进行解释。这似乎没有发生

我在Lynda.com Rails课程中使用Destroy也遇到了同样的问题,因此我相信这是我开发环境中的一个问题。我在MacBookPro Lion的HTTP服务器上使用Rails 4、Ruby 2.00p274、MySQL和WEBrick

在选择销毁时的终端会话中:

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=&gt;&quot;Are you sure?&quot;}"                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

  • 在html页面中添加includeJS,因为删除函数将使用js来处理。

  • 添加
    跳过\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