我正在尝试向我的设计用户添加一个显示页面,但似乎无法正确传递id值,如何创建显示页面的链接?出于某种原因,rails正在对URL进行此操作 /show.1
用户控制器:
def show
@user = User.find(params[:id])
end
用户/ show.html.erb
<h1><%= @user.username %></h1>
指向用户个人资料的链接也为我提供了问题ID无方法
<%= link_to @post.email, users_show_path(@user.id) %>
的routes.rb
get "users/show"
get "pages/faq"
get "pages/about"
devise_for :users
resources :posts
答案 0 :(得分:3)
您已将节目路线定义为:
get "users/show"
请注意,此路线中没有动态细分,例如:id
。这意味着您的路线不希望传递任何价值。但在链接到此路线时,您已通过@user.id
<%= link_to @post.email, users_show_path(@user.id) %>
路线没有预料到的。所以,Rails假设你传递了format
(如.html
,.json
等),这就是为什么你看到网址形成为users/show.1
。
要解决此问题,我建议您在路线中添加动态细分,以便正确捕获用户id
。
更改强>
get "users/show"
。通过强>
get "users/show/:id" => "users#show", as: :users_show
对于id = 1
的用户,当您点击用户个人资料链接时,生成的网址将为http://yourdomain/users/show/1