Rails路由问题

时间:2010-11-03 20:53:25

标签: ruby-on-rails routing

在rails应用程序中,我有一个特殊的URL(/ profile),我正在映射到用户控制器,以允许用户查看和编辑他们的个人资料。我在路由文件中输入了以下条目,以便配置文件的“get”将我引导到用户控制器中的配置文件操作,配置文件的“post”将路由到用户控制器中的update_profile操作。

match '/profile', :to => 'users#profile', :via => "get"
match '/profile', :to => 'users#update_profile', :via => "post"

如果我运行rake路线,我会看到以下两个条目

profile GET   /profile(.:format)  {:controller=>"users", ":action=>"profile"}
profile POST  /profile(.:format)  {:controller=>"users", ":action=>"update_profile"}

如果我尝试点击开发网址http://localhost:3000/profile,则会按预期显示个人资料页面。如果我按下表单按钮,则会出现以下错误:

Routing Error

No route matches "/profile"

查看初始页面上生成的html,我看到以下表单标记,因此似乎操作已正确设置。

<form accept-charset="UTF-8" action="/profile" class="edit_user" enctype="multipart/form-data" id="edit_user_1" method="post">

那我错过了什么?通过查看rake路由输出,我假设这将按原样工作。我是否错误地考虑了我的http动词?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我在这里看到一些问题。

首先,这些是针对特定用户的操作。所以路线应该是'profile/:id'

其次,在托管资源时会自动生成显示和更新。重命名操作并将其映射到自定义URL有什么好处?打破自动生成的Rails RESTful路由经常会遇到麻烦。它可以做到,但你应该有充分的理由去做。

第三,你的路线对我来说很有趣。他们不应该有一些引用。它是你在运行rake路线时它们在你的控制台中的显示方式吗?