mat*_*ski 3 ruby-on-rails destroy
我有
def destroy
Event.find(params[:id]).destroy
flash[:info] = "Event deleted"
redirect_to :back
end
Run Code Online (Sandbox Code Playgroud)
我可以从2个不同的视图中删除一个项目.在一个视图中,它是一个项目列表,因此我可以使用:back并重新加载同一页面.但另一个删除是在要删除的项目的视图上,所以一旦它消失了我想要的redirect_to地方不同.
我的问题是如何redirect_to根据destroy方法的来源告诉Rails不同的路径?
就像测试一样,我尝试使用基于html中的body类的if语句,但是实例变量没有被带入destroy方法(我假设),因为它不起作用.例如
def destroy
if @body_class == 'one page'
Event.find(params[:id]).destroy
flash[:info] = "Event deleted"
redirect_to :back
elsif @body_class == 'a different page'
Event.find(params[:id]).destroy
flash[:info] = "Event deleted"
redirect_to root_path
end
end
Run Code Online (Sandbox Code Playgroud)
通过破坏链接传递参数.如果链接在列表中,如下所示:
<%= link_to 'destroy', event_path(event, :from=>"list"), :method=>:delete %>
Run Code Online (Sandbox Code Playgroud)
如果在对象页面上:
<%= link_to 'destroy', event_path(event), :method=>:delete %>
Run Code Online (Sandbox Code Playgroud)
在控制器中:
def destroy
Event.find(params[:id]).destroy
flash[:info] = "Event deleted"
if params[:from]=='list'
redirect_to :back
else
redirect_to root_url
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5876 次 |
| 最近记录: |