我有一个带有'customURL'字段的Pages模型。我可以在'/:customurl'上进行页面#show。但是因为我已经定义了页面在路径中显示的方式,我的创建操作现在会将成功重定向到错误的路径。在保存时,我应该更改为最干净地修正重定向以指向'/:customurl'?
控制器:
def create
@page = Page.new(params[:page])
respond_to do |format|
if @page.save
format.html { redirect_to page_url, notice: 'Page was successfully created.' }
format.json { render json: @page, status: :created, location: @page }
else
format.html { render action: "new" }
format.json { render json: @page.errors, status: :unprocessable_entity }
end
end
end
路线:
resources :pages
...
get "/:customURL" => "pages#show"
谢谢!
答案 0 :(得分:1)
在routes.rb
中,您可以添加魔术助手。
get "/:customURL" => "pages#show", :as => :custom
然后在您的控制器中
format.html { redirect_to custom_url(@page. customURL), notice: ... }
现在,“/:customURL”将需要在routes.rb
中排在最后,路由是贪婪的,第一个匹配将得到它。因此,如果你有类似“/ bob”的东西并且你有一个控制器在“/ bob”监听,控制器将在页面控制器之前得到它。