rails URL中的点

时间:2014-04-17 22:57:31

标签: ruby-on-rails-4 devise routes user-profile

我正在尝试向我的设计用户添加一个显示页面,但似乎无法正确传递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

1 个答案:

答案 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