2

我有一个account/settings人们可以访问以更新他们的帐户的页面。这是一个单一的资源,因此他们可以(或应该)只能更新自己的帐户设置。当显示表单错误时,我遇到了奇怪的 URL 格式。

如果他们打开/account/settings/edit并尝试提交有错误的表单(例如,不是有效的电子邮件地址),他们将被重定向到向/account/settings.1他们显示问题所在的位置(在我们的示例中,不是有效的电子邮件地址)。

一切都“有效”,但我想知道为什么.1URL 会附加一个。我想他们会被送回account/settingsaccount/settings/edit他们可以纠正错误的地方。难道我做错了什么?

路线.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
4

1 回答 1

3

确保使用edit_account_settings_path, NOT生成路径edit_account_settings_path(@user)。对于单一资源,您不应传入资源,因为正如您所说,只有其中一个。

于 2013-05-24T10:48:13.187 回答