【问题标题】:Can't get Devise path correct无法正确设计路径
【发布时间】:2013-04-02 16:13:24
【问题描述】:

我安装了 Devise 以在我的应用程序中获得身份验证。我遵循了关于 gem 的所有说明,这部分似乎进展顺利。

但是现在我试图链接到注册页面,我得到了一个我无法弄清楚的疯狂错误......由于某种原因,rails 无法确定设计控制器的位置......

来自:public/index.html.erb(公共登陆页面)

<div class ="getstarted">
  <table>
    <tr>
      <td id = "introtext"> 
        <p>Foo is good..l here is why: </p>
        <ul>
          <li>Improved quality</li>
          <li>Technology consistencies </li>
          <li>Cost efficiencies</li>
          <li>Increased security</li>
         <li>Improved adherence to compliance standards</li>
       </ul>    

      </td>
      <td id = "buttons">
        <%= button_to "Sign Up for an Account", new_user_registration_path, :method => "get" %>
        <br/>
        <%= button_to "Log In to your Account", new_user_session_path, :controller => "devise/session", :method => "get" %>
      </td>
    </tr>
  </table>

</div>

routes.rb 有以下一行:

 devise_for :users

Routes 表似乎有它需要的东西:

    new_user_session GET    /users/sign_in(.:format)                                   devise/sessions#new
        user_session POST   /users/sign_in(.:format)                                   devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)                                  devise/sessions#destroy
       user_password POST   /users/password(.:format)                                  devise/passwords#create
   new_user_password GET    /users/password/new(.:format)                              devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format)                             devise/passwords#edit
                     PUT    /users/password(.:format)                                  devise/passwords#update

cancel_user_registration GET /users/cancel(.:format) 设计/注册#cancel user_registration POST /users(.:format) 设计/注册#create new_user_registration GET /users/sign_up(.:format) 设计/注册#new edit_user_registration GET /users/edit(.:format) 设计/注册#edit PUT /users(.:format) 设计/注册#update 删除 /users(.:format) 设计/注册#destroy

当我点击按钮注册时,我转到链接:

http://localhost:3000/users/sign_up?

Rails 给了我错误:

No route matches {:controller=>"devise/public"}

登录按钮也是如此:

http://localhost:3000/users/sign_in?

No route matches {:controller=>"devise/public"}

我为“public”设置了一个视图作为我的公共可见(预认证)页面...我看到 Rails 正在设计目录(不存在)中寻找它。

我也尝试删除 ?在 URL 的末尾......这并没有产生任何区别。

我被困住了,已经投入了几个小时。希望有人能帮帮我。

【问题讨论】:

  • 几件事:(1)在这种情况下,您不需要在上面的链接中指定:method 或:controller,除非您已经覆盖了设计控制器。 (2) 自实施 Devise 以来,您是否重启过服务器?
  • 奇怪。在我的 application.html.erb 我有块 &lt;% if current_page?(:controller =&gt; 'public') %&gt; &lt; div class = "container2"&gt; &lt;% else %&gt; &lt;div class="container"&gt; &lt;% end %&gt; 似乎这将控制器设置为“公共” - 如果我删除这个逻辑,它工作正常。
  • 万事大吉。

标签: ruby-on-rails devise


【解决方案1】:

对于您的“登录到您的帐户”按钮,我会将当前路由从“new_user_session_path”更改为“user_session_path”。

我也会把 'button_to' 改成 'link_to'

看看有什么作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2019-05-11
    相关资源
    最近更新 更多