如何解决为什么devise将/ devise /放在每个link_to锚的前面?
| 我刚刚生成了所有供设计的视图,并且我开始自定义登录屏幕。它非常有用,除了登录页面上生成的所有链接均以\“ / devise \”开头的链接之外。 为什么这样做呢?似乎是奇怪的默认行为 如何阻止将/ devise添加到每个link_to()? 我的路线文件:devise_for :users
get \"/webpages/:page\" => \"webpages#show\",:as => :show_webpage
root :to => \"webpages#index\"
我的“耙路”
new_user_session GET /users/sign_in(.:format) {:action=>\"new\",:controller=>\"devise/sessions\"}
user_session POST /users/sign_in(.:format) {:action=>\"create\",:controller=>\"devise/sessions\"}
destroy_user_session GET /users/sign_out(.:format) {:action=>\"destroy\",:controller=>\"devise/sessions\"}
user_password POST /users/password(.:format) {:action=>\"create\",:controller=>\"devise/passwords\"}
new_user_password GET /users/password/new(.:format) {:action=>\"new\",:controller=>\"devise/passwords\"}
edit_user_password GET /users/password/edit(.:format) {:action=>\"edit\",:controller=>\"devise/passwords\"}
PUT /users/password(.:format) {:action=>\"update\",:controller=>\"devise/passwords\"}
cancel_user_registration GET /users/cancel(.:format) {:action=>\"cancel\",:controller=>\"devise/registrations\"}
user_registration POST /users(.:format) {:action=>\"create\",:controller=>\"devise/registrations\"}
new_user_registration GET /users/sign_up(.:format) {:action=>\"new\",:controller=>\"devise/registrations\"}
edit_user_registration GET /users/edit(.:format) {:action=>\"edit\",:controller=>\"devise/registrations\"}
PUT /users(.:format) {:action=>\"update\",:controller=>\"devise/registrations\"}
DELETE /users(.:format) {:action=>\"destroy\",:controller=>\"devise/registrations\"}
show_webpage GET /webpages/:page(.:format) {:controller=>\"webpages\",:action=>\"show\"}
root /(.:format) {:controller=>\"webpages\",:action=>\"index\"}
当我尝试渲染来自devise控制器的页面时收到的错误消息:
ActionController::RoutingError in Devise/sessions#new
Showing /home/egervari/Projects/training/app/views/layouts/application.html.erb where line #21 raised:
No route matches {:controller=>\"devise/webpages\",:action=>\"show\",:page=>\"tour\"}
Extracted source (around line #21):
18: </a>
19: </li>
20: <li>
21: <%= link_to(\"Tour\",:controller => \"webpages\",:action => \"show\",:page => \"tour\") %>
22: </li>
23: <li>
24: <%= link_to(\"Why Use Us?\",:page => \"why\") %>
如您在上面看到的,它正在尝试将“ devise / \”添加到我的链接中。这根本不是我想要的。
解决方法
在新版本的Rails中,您可以执行以下操作:
<%= link_to \"Privacy Policy\",show_webpage_path(:page => \'privacy\') %>
您只需将_path附加到在执行“耙路”时看到的命名路由即可。将_url附加到命名路由后,将获得URL字符串BTW。这可能是有用的。
ian。
,我终于想通了。
<li><%= link_to(\"Terms and Use\",:controller => \"/webpages\",:action => \"show\",:page => \"terms\") %> |</li>
<li><%= link_to(\"Privacy Policy\",:page => \"privacy\") %> |</li>
基本上,我所做的是使用\“ / webpages \”而不是\“ webpages \”告诉Rails这些控制器不在\“ devise \”名称空间或父目录下。
这是适当的解决方法吗?有没有更简单的解决方案?
,所有旨在进行设计的链接/表单都应以\“ / devise \”开头。请参阅下面的devise生成的路线。为什么要更改此行为?它不起作用吗?还是您需要/想要自定义设计控制器?
new_user_session GET /users/login(.:format) {:action=>\"new\",:controller=>\"devise/sessions\"}
user_session POST /users/login(.:format) {:action=>\"create\",:controller=>\"devise/sessions\"}
destroy_user_session GET /users/sign_out(.:format) {:action=>\"destroy\",:controller=>\"devise/sessions\"}
user_password POST /users/password(.:format) {:action=>\"create\",:controller=>\"devise/passwords\"}
new_user_password GET /users/password/new(.:format) {:action=>\"new\",:controller=>\"devise/passwords\"}
edit_user_password GET /users/password/edit(.:format) {:action=>\"edit\",:controller=>\"devise/passwords\"}
PUT /users/password(.:format) {:action=>\"update\",:controller=>\"devise/passwords\"}
cancel_user_registration GET /users/cancel(.:format) {:action=>\"cancel\",:controller=>\"devise/registrations\"}
user_registration POST /users(.:format) {:action=>\"create\",:controller=>\"devise/registrations\"}
new_user_registration GET /users/register(.:format) {:action=>\"new\",:controller=>\"devise/registrations\"}
edit_user_registration GET /users/edit(.:format) {:action=>\"edit\",:controller=>\"devise/registrations\"}
PUT /users(.:format) {:action=>\"update\",:controller=>\"devise/registrations\"}
DELETE /users(.:format) {:action=>\"destroy\",:controller=>\"devise/registrations\"}
user_confirmation POST /users/confirmation(.:format) {:action=>\"create\",:controller=>\"devise/confirmations\"}
new_user_confirmation GET /users/confirmation/new(.:format) {:action=>\"new\",:controller=>\"devise/confirmations\"}
GET /users/confirmation(.:format) {:action=>\"show\",:controller=>\"devise/confirmations\"}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。