我似乎无法弄清楚如何正确设置我的路线。
在我的应用程序中,我有一个视图可以让网站所有者更新他们的地址信息。new和create操作是注册过程的一部分,位于signups_controller
. 编辑和更新操作位于settings_controller
.
当用户进入设置区域时,他/她只看到编辑表单。填写完毕后,用户将返回到同一个表单,并显示一条闪现消息或错误消息。 这是控制器的外观:
class SettingsController < ApplicationController
def edit
@account = current_account
@account.companies.first
@account.companies.first.addresses.first
@account.companies.first.phones.first
end
def update
@account = current_account
if @account.update_attributes(params[:account])
redirect_to edit_setting_path
flash[:notice] = "Success!"
else
render :edit
end
end
end
在我的路线中,我只有:
resources :settings
指向该站点区域的链接是一个名为 linke 的基本 RESTful,带有参数选项:
edit_setting_path(:id => current_account.id)
当用户到达此页面时,他们会看到以下 URL:
http://domainname.com/settings/1/edit
当他们提交表单并收到错误时,URL 更改为:
http://domainname.com/settings/1
为什么 URL 会发生变化——我不希望它发生变化?有没有办法让它与初始编辑视图保持一致?我尝试对失败的更新进行重定向,但是我没有收到错误消息。
有任何想法吗?