我有一个account/settings
页面的人可以访问以更新他们的帐户。它是一种独特的资源,因此他们可以(或应该)只能更新自己的帐户设置。当显示表单错误时,我遇到了一种奇怪的URL格式。
如果他们在/account/settings/edit
上并尝试提交有错误的表单(例如,不是有效的电子邮件地址),则会将其重定向到/account/settings.1
,并向其显示错误的位置(在我们的示例中) ,不是有效的电子邮件地址。)
一切都“有效”,但我想知道为什么会有.1
附加到网址上。我想他们会被送回account/settings
或account/settings/edit
,他们可以在那里纠正错误。我做错了吗?
的routes.rb
namespace :account do
resource :settings, :only => [:show, :edit, :update]
end
settings_controller.rb
def edit
@account = Account.find(session[:account][:id])
end
def update
@account = Account.find(session[:account][:id])
if @account.update_attributes(params[:account])
redirect_to account_settings_path
else
render 'edit'
end
end
佣金路线
edit_account_settings GET /account/settings/edit(.:format) account/settings#edit
account_settings GET /account/settings(.:format) account/settings#show
account_settings PUT /account/settings(.:format) account/settings#update
答案 0 :(得分:3)
确保使用edit_account_settings_path
生成路径,而不是edit_account_settings_path(@user)
。对于单一资源,您不应该传入资源,因为正如您所说,只有一个资源。