首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Michael的Rails教程第10章破坏方法

Michael的Rails教程第10章破坏方法
EN

Stack Overflow用户
提问于 2013-07-09 07:32:29
回答 1查看 330关注 0票数 0

我有一个概念性的rails问题。我目前正在米切尔·哈特尔著名的Rails教程(http://ruby.railstutorial.org/)上工作,我要学习第10章(哇!)。作为一个背景,微博正在创建,一个类似于twitter的状态提要正在实现。创建微型邮件时,它会出现在主页状态提要和配置文件页面中。我的问题来自于微博和feed_item对象之间的关系。在本教程中,可以通过用户的个人资料或主页的提要删除微博。问题是,微博是通过不同的部分删除的,这取决于它是用户的个人资料还是主页的提要。以下是部分内容:

对于配置文件页:

代码语言:javascript
复制
  <% if current_user?(micropost.user) %>
    <%= link_to "delete", micropost, method: :delete,
                                     data: { confirm: "You sure?" },
                                     title: micropost.content %>

对于主页状态提要:

代码语言:javascript
复制
<li id="<%= feed_item.id %>">

  <span class="user">
    <%= link_to feed_item.user.name, feed_item.user %>
  </span>
  <span class="content"><%= feed_item.content %></span>
  <span class="timestamp">
    Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
  </span>
    <% if current_user?(feed_item.user) %>
    <%= link_to "delete", feed_item, method: :delete,
                                     data: { confirm: "You sure?" },
                                     title: feed_item.content %>
  <% end %>
</li> 

以下是控制器、视图和模型:

代码语言:javascript
复制
class StaticPagesController < ApplicationController
  def home
    if signed_in?
      @micropost  = current_user.microposts.build
      @feed_items = current_user.feed.paginate(page: params[:page])
    end
  end

end

代码语言:javascript
复制
class User < ActiveRecord::Base
...
has_many :microposts,  dependent: :destroy
....
  def feed
    Micropost.where("user_id = ?", id)
  end
...
end

代码语言:javascript
复制
    class MicropostsController < ApplicationController
    before_action :signed_in_user, only: [:create, :destroy]
    before_action :correct_user,   only: :destroy
..

     def destroy
            @micropost.destroy
            redirect_to root_url
          end

...
    end

我假设从主页状态提要中删除的微博是通过micropost Controller的破坏方法发生的,但我不确定如何发生。我在主页状态提要中看到,link_ to的delete按钮具有delete方法,但它会转到feed_item url。这个feed_item网址是从哪里来的?我假设link_to知道以某种方式删除微博,因为提要的原始源来自用户模型中的一组微博,但是它怎么知道通过点击feed_item url到micropost的控制器销毁方法呢?link_to的“标题: feed_item.content”与feed_item知道删除哪个微博有什么关系吗?如果有人能帮助我理解微博、feed_item和破坏方法之间的关系,我将非常感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-07-09 07:56:35

我可以帮助您使用DELETE方法,实际上很容易:大多数浏览器都不支持方法补丁、PUT & DELETE,因此Rails通过传递参数"_method“并在内部进行转换,从而在某种程度上欺骗了您。这就是为什么你把它看作是一个GET,直到它击中Rails内部。

您可以在这里阅读更多内容:helpers.html#how-do-forms-with-patch-put-or-delete-methods-work-questionmark

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17542509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档