0

我有一个 rails 3 应用程序,当我单击指向我的条款页面的链接时,它会路由到一个完全不同的控制器,而不是路由应该使用的控制器。更奇怪的是,当我没有登录并且我正在使用设计时,该路线有效。

登录时单击链接时出现此错误。

No route matches {:action=>"edit", :controller=>"users", :id=>nil}

<%= link_to "Terms", terms_path %>

路线(按照它们在 routes.rb 中出现的顺序):

devise_for :users, :controllers => {:registrations => "registrations"}

resources :users do
  member do
    get :following, :followers
    post :accept
  end
end

match '/terms',     to: 'static_pages#user_agreement'

静态页面控制器

def user_agreement

end

耙子路线

terms        /terms(.:format)                     static_pages#user_agreement

这也发生在我以这种方式路由到 staticpages 控制器的所有其他操作上,但不会发生在路由到不同控制器的任何其他操作上。

更新:条款页面标题:

<%= link_to "Follow", users_path %>
<%= link_to current_user.name, current_user %>
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

页脚:

<%= link_to "Welcome", welcome_path %>
<%= link_to "Settings", edit_user_path(@user) %>
<%= link_to "Terms", terms_path %>

所有内容都是纯html。

提前致谢

4

1 回答 1

1

正如评论中所暗示的那样,您有一个指向edit_user_path没有的链接。@user

current_user无论如何,您几乎肯定应该使用。

于 2013-05-21T18:35:07.173 回答