如何解决奇怪的路径生成
| 我目前正在处理管理面板中的某些缺少的操作,其中之一是编辑实体。 route.rb文件包含以下条目: namespace \"admin\" do
resources :users,:cvs,:settings,:languages,:vacancies,:countries,:companies
end
我正在edit.html.haml页面上生成用于编辑实体的表单。该haml页的代码如下所示:
= form_for @cv,:url => admin_cvs_path(@cv.id) do |form|
%table.clean
%tr
%th.border-left= \'Value\'
%th.border-right= \'Key\'
%tr
%td.border-left= \'Title\'
%td.border-right= form.text_field :title
%tr
%td.border-left= \'First name\'
%td.border-right= form.text_field :first_name
%tr
%td.border-left= \'Last name\'
%td.border-right= form.text_field :last_name
%tr
%td.border-left= \'Gender\'
%td.border-right= form.select :gender,options_for_select([\'M\',\'F\',\'NA\'])
%tr
%td.border-left= \'Address\'
%td.border-right= form.text_field :address
%tr
%td.border-left= \'City\'
%td.border-right= form.text_field :city
%tr
%td.border-left= \'Postal code\'
%td.border-right= form.text_field :postal_code
%tr
%td.border-left= \'Country\'
%td.border-right= form.select :country_id,options_from_collection_for_select(@countries,:id,:name)
%tr
%td.border-left.border-right{:colspan => 2}= form.submit \'update\'
但是,查看生成的HTML时,我收到以下输出:
<form id=\"edit_cv_2\" class=\"edit_cv\" method=\"post\" action=\"/admin/cvs.2\" accept-charset=\"UTF-8\">
如果我没记错的话,目标动作是错误的。它应该是/ admin / cvs / 2,而不是生成的/admin/cvs.2。
奇怪的是,另一个实体的完全相同的代码会生成正确的html,但不会为此生成一个html。
编辑:从“耙路”中添加
root /(.:format) {:action=>\"index\",:controller=>\"static\"}
select_cv GET /select(.:format) {:action=>\"select\",:controller=>\"static\"}
categorize_cv POST /categorize(.:format) {:action=>\"categorize\",:controller=>\"static\"}
match_cv POST /match(.:format) {:action=>\"match\",:controller=>\"static\"}
semantic POST /semantic(.:format) {:action=>\"semantic\",:controller=>\"static\"}
cv_show GET /cvs/show/:id(.:format) {:action=>\"show\",:controller=>\"cvs\"}
esco_new GET /cvs/new(.:format) {:action=>\"new\",:controller=>\"cvs\"}
esco_view GET /cvs/esco_view/:id(.:format) {:action=>\"esco_view\",:controller=>\"cvs\"}
esco_match POST /cvs/esco_match/:id(.:format) {:action=>\"esco_match\",:controller=>\"cvs\"}
new_session GET /session/new(.:format) {:action=>\"new\",:controller=>\"session\"}
create_session PUT /session/create(.:format) {:action=>\"create\",:controller=>\"session\"}
destroy_session DELETE /session/destroy(.:format) {:action=>\"destroy\",:controller=>\"session\"}
admin_users GET /admin/users(.:format) {:action=>\"index\",:controller=>\"admin/users\"}
POST /admin/users(.:format) {:action=>\"create\",:controller=>\"admin/users\"}
new_admin_user GET /admin/users/new(.:format) {:action=>\"new\",:controller=>\"admin/users\"}
edit_admin_user GET /admin/users/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/users\"}
admin_user GET /admin/users/:id(.:format) {:action=>\"show\",:controller=>\"admin/users\"}
PUT /admin/users/:id(.:format) {:action=>\"update\",:controller=>\"admin/users\"}
DELETE /admin/users/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/users\"}
admin_settings GET /admin/settings(.:format) {:action=>\"index\",:controller=>\"admin/settings\"}
POST /admin/settings(.:format) {:action=>\"create\",:controller=>\"admin/settings\"}
new_admin_setting GET /admin/settings/new(.:format) {:action=>\"new\",:controller=>\"admin/settings\"}
edit_admin_setting GET /admin/settings/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/settings\"}
admin_setting GET /admin/settings/:id(.:format) {:action=>\"show\",:controller=>\"admin/settings\"}
PUT /admin/settings/:id(.:format) {:action=>\"update\",:controller=>\"admin/settings\"}
DELETE /admin/settings/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/settings\"}
admin_languages GET /admin/languages(.:format) {:action=>\"index\",:controller=>\"admin/languages\"}
POST /admin/languages(.:format) {:action=>\"create\",:controller=>\"admin/languages\"}
new_admin_language GET /admin/languages/new(.:format) {:action=>\"new\",:controller=>\"admin/languages\"}
edit_admin_language GET /admin/languages/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/languages\"}
admin_language GET /admin/languages/:id(.:format) {:action=>\"show\",:controller=>\"admin/languages\"}
PUT /admin/languages/:id(.:format) {:action=>\"update\",:controller=>\"admin/languages\"}
DELETE /admin/languages/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/languages\"}
admin_vacancies GET /admin/vacancies(.:format) {:action=>\"index\",:controller=>\"admin/vacancies\"}
POST /admin/vacancies(.:format) {:action=>\"create\",:controller=>\"admin/vacancies\"}
new_admin_vacancy GET /admin/vacancies/new(.:format) {:action=>\"new\",:controller=>\"admin/vacancies\"}
edit_admin_vacancy GET /admin/vacancies/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/vacancies\"}
admin_vacancy GET /admin/vacancies/:id(.:format) {:action=>\"show\",:controller=>\"admin/vacancies\"}
PUT /admin/vacancies/:id(.:format) {:action=>\"update\",:controller=>\"admin/vacancies\"}
DELETE /admin/vacancies/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/vacancies\"}
admin_countries GET /admin/countries(.:format) {:action=>\"index\",:controller=>\"admin/countries\"}
POST /admin/countries(.:format) {:action=>\"create\",:controller=>\"admin/countries\"}
new_admin_country GET /admin/countries/new(.:format) {:action=>\"new\",:controller=>\"admin/countries\"}
edit_admin_country GET /admin/countries/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/countries\"}
admin_country GET /admin/countries/:id(.:format) {:action=>\"show\",:controller=>\"admin/countries\"}
PUT /admin/countries/:id(.:format) {:action=>\"update\",:controller=>\"admin/countries\"}
DELETE /admin/countries/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/countries\"}
GET /admin/languages(.:format) {:action=>\"index\",:controller=>\"admin/languages\"}
GET /admin/languages/new(.:format) {:action=>\"new\",:controller=>\"admin/languages\"}
GET /admin/languages/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/languages\"}
GET /admin/languages/:id(.:format) {:action=>\"show\",:controller=>\"admin/languages\"}
admin_companies GET /admin/companies(.:format) {:action=>\"index\",:controller=>\"admin/companies\"}
POST /admin/companies(.:format) {:action=>\"create\",:controller=>\"admin/companies\"}
new_admin_company GET /admin/companies/new(.:format) {:action=>\"new\",:controller=>\"admin/companies\"}
edit_admin_company GET /admin/companies/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/companies\"}
admin_company GET /admin/companies/:id(.:format) {:action=>\"show\",:controller=>\"admin/companies\"}
PUT /admin/companies/:id(.:format) {:action=>\"update\",:controller=>\"admin/companies\"}
DELETE /admin/companies/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/companies\"}
admin_cvs GET /admin/cvs(.:format) {:action=>\"index\",:controller=>\"admin/cvs\"}
POST /admin/cvs(.:format) {:action=>\"create\",:controller=>\"admin/cvs\"}
new_admin_cv GET /admin/cvs/new(.:format) {:action=>\"new\",:controller=>\"admin/cvs\"}
edit_admin_cv GET /admin/cvs/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/cvs\"}
admin_cv GET /admin/cvs/:id(.:format) {:action=>\"show\",:controller=>\"admin/cvs\"}
PUT /admin/cvs/:id(.:format) {:action=>\"update\",:controller=>\"admin/cvs\"}
DELETE /admin/cvs/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/cvs\"}
admin_static_index GET /admin/static(.:format) {:action=>\"index\",:controller=>\"admin/static\"}
POST /admin/static(.:format) {:action=>\"create\",:controller=>\"admin/static\"}
new_admin_static GET /admin/static/new(.:format) {:action=>\"new\",:controller=>\"admin/static\"}
edit_admin_static GET /admin/static/:id/edit(.:format) {:action=>\"edit\",:controller=>\"admin/static\"}
admin_static GET /admin/static/:id(.:format) {:action=>\"show\",:controller=>\"admin/static\"}
PUT /admin/static/:id(.:format) {:action=>\"update\",:controller=>\"admin/static\"}
DELETE /admin/static/:id(.:format) {:action=>\"destroy\",:controller=>\"admin/static\"}
admin_save_cv POST /admin/cvs/save(.:format) {:action=>\"save\",:controller=>\"admin/cvs\"}
admin_index GET /admin(.:format) {:action=>\"index\",:controller=>\"admin/static\"}
解决方法
将admin_cvs_path替换为
= form_for @cv,:url => admin_cvs_path(@cv.id) do |form|
与
= form_for @cv,:url => admin_cv_path(@cv.id) do |form|
您可以通过在控制台中调用rake:routes来检查如何调用适当的路径助手
, 尝试更改:
= form_for @cv,:url => admin_cvs_path(@cv.id) do |form|
至:
= form_for @cv,:url => admin_cvs_path(@cv) do |form|
如果这样做没有帮助,请发布以下内容:
rake routes | grep cv
, 这可能是因为单数和复数之间存在冲突。
例如:
单数:人
复数:人
为您的cvs_path提供更好的单数,或者更好(我认为),将您的cvs_path重命名为没有“多个”问题的路由。例如,一个repositories_path而不是cvs_path
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。