有一些“复杂”路由,什么是清理下面的硬编码链接并使它们成为命名路由的好方法?我在几个位置上有这些构造,并希望将它们从代码中删除。
profiles_controller.rb
def update
@profile = Profile.find(params[:id])
@tags = Session.tag_counts_on(:tags)
@profile.form = params[:form]
@match = Match.where(:user_id => current_user.id).first
authorize! :update, @profile
respond_to do |format|
if @profile.update_attributes(params[:profile])
format.html { redirect_to "/me/#{ current_user.username }/edit/#{ @profile.form }", notice: t('notice.saved') }
else
format.html { render action: "/edit/edit_" + params[:profile][:form], :what => @profile.form }
end
end
end
答案 0 :(得分:2)
您可以通过设置:as
属性来创建自己的命名路由。
因此,对于成功的更新重定向,您必须具有类似于`post'/me/:user/edit/:form.format'=>的路线。 '简档#秀'
只需将, :as => :profiles
放在路线末尾,您就可以重定向到:profile_path(:user => current_user.username, :form => @profile.form)
。
路线更改后运行rake routes
将为您提供可以使用的命名路线列表。