Rails 3.1 – 如何使用自定义路由正确重定向

我有一个带有’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" 

谢谢!

routes.rb ,您可以添加魔术助手。

 get "/:customURL" => "pages#show", :as => :custom 

然后在你的控制器中

 format.html { redirect_to custom_url(@page. customURL), notice: ... } 

现在,“/:customURL”将需要在您的routes.rb为最后routes.rb ,路由是贪婪的,第一个匹配将获得它。 因此,如果你有类似“/ bob”的东西并且你有一个控制器在“/ bob”监听,控制器将在页面控制器之前得到它。