Rails奇异路径问题

时间:2013-05-22 20:08:39

标签: ruby-on-rails routes

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

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

一切都“有效”,但我想知道为什么会有.1附加到网址上。我想他们会被送回account/settingsaccount/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

1 个答案:

答案 0 :(得分:3)

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