Saf*_*wan 3 controller ruby-on-rails ruby-on-rails-4
题:
我是多么想在create行动之后重定向到不同的路径,如果是previous_page则../reader/new是../reader/blog/:id,而如果是previous_page则../editor/new是../editor/blog/:id.
阐释:
我想修改控制器操作,以便它可以重定向到不同的路径,具体取决于它来自哪个页面.例如,我有一个reader,editor和blog模型.双方reader并editor可以创建一个blog.
这是原作blogs_controller:
class BlogsController < ApplicationsController
def create
@blog = Blog.new(blog_params)
respond_to do |format|
if @blog.save
format.html { redirect_to @blog }
else
format.html { render :new }
end
end
end
private
def blog_params
params.require(:service).permit(:title, :content)
end
end
Run Code Online (Sandbox Code Playgroud)
你有几个选择:
redirect_to :back如果只需要重定向到上一页,则在控制器中使用request.referer控制器决定重定向的位置create操作,例如params[:redirect_to] = "reader"来自"reader"页面时传递,并根据此参数决定重定向的位置.您甚至可以将整个URI重定向到param中,然后重定向到它(但这种方法不安全,因为用户可能会破坏params).通常,我会选择第三个选项(参数),因为您可以最好地控制重定向过程(前两个选项依赖于HTTP引用,任何访问者也可能会对其进行修改,因此可能不安全).
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |