Michael Hartl 的 Rails 教程第 10 章中的 destroy 方法
destroy method on Michael Hartl's Rails Tutorial Chapter 10
我正在阅读 Michael Hartl 的 Rails 教程,现在我在第 10 章,但我无法理解一件事:
删除微博时,destroy
方法中的@micropost
变量在哪里定义?
(我怀疑可能是link_to
方式的服务器,但我不确定这是否有意义)
查看:
<%= link_to "delete", micropost, method: :delete, data: { confirm: "You sure?" } %>
微博负责人:
def create
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
def destroy
@micropost.destroy
redirect_to request.referrer || root_url
end
静态页面控制器:
def home
if logged_in?
@micropost = current_user.microposts.build
@feed_items = current_user.feed.paginate(page: params[:page])
end
end
(不熟悉教程的朋友,微博的格式和索引在root_page
,由static_pages
处理)
如果缺少一些代码,这里是完整的项目:
https://github.com/Salomanuel/Odin_Project-Ruby_on_Rails_Tutorial/tree/13-user-microposts
好的,在做一些练习时我找到了解决方案。
原来 @micropost
变量是由 before_action
调用的私有方法分配的:
微博负责人:
before_action :correct_user, only: :destroy
private
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
但是,这仍然被认为是好的做法吗?
你看到在控制器的顶部有一条线
before_action :correct_user, only: :destroy
这一行告诉 rails 在调用 :destroy
.
之前调用 current_user
函数
现在在 correct_user
函数中看到我们从 params
获取 id
并声明 @micropost
变量。
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
希望这能回答您的问题。您可以从此处 http://guides.rubyonrails.org/active_record_callbacks.html.
阅读有关回调的更多信息
我正在阅读 Michael Hartl 的 Rails 教程,现在我在第 10 章,但我无法理解一件事:
删除微博时,destroy
方法中的@micropost
变量在哪里定义?
(我怀疑可能是link_to
方式的服务器,但我不确定这是否有意义)
查看:
<%= link_to "delete", micropost, method: :delete, data: { confirm: "You sure?" } %>
微博负责人:
def create
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
def destroy
@micropost.destroy
redirect_to request.referrer || root_url
end
静态页面控制器:
def home
if logged_in?
@micropost = current_user.microposts.build
@feed_items = current_user.feed.paginate(page: params[:page])
end
end
(不熟悉教程的朋友,微博的格式和索引在root_page
,由static_pages
处理)
如果缺少一些代码,这里是完整的项目:
https://github.com/Salomanuel/Odin_Project-Ruby_on_Rails_Tutorial/tree/13-user-microposts
好的,在做一些练习时我找到了解决方案。
原来 @micropost
变量是由 before_action
调用的私有方法分配的:
微博负责人:
before_action :correct_user, only: :destroy
private
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
但是,这仍然被认为是好的做法吗?
你看到在控制器的顶部有一条线
before_action :correct_user, only: :destroy
这一行告诉 rails 在调用 :destroy
.
current_user
函数
现在在 correct_user
函数中看到我们从 params
获取 id
并声明 @micropost
变量。
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
希望这能回答您的问题。您可以从此处 http://guides.rubyonrails.org/active_record_callbacks.html.
阅读有关回调的更多信息