【发布时间】:2013-08-18 19:33:19
【问题描述】:
我有一个用户的显示页面
1.) 路线
get 'users/:id' => 'user#show', as: :user
2.) 用户控制器.rb
class UserController < ApplicationController
before_filter :authenticate_user!, only: :show
def show
@user = User.find_by_name(params[:id]) # for name instead of id
@listings = @user.listings
end
end
我可以通过“current_user”链接到它。
我想创建一个 Shop Controller,所以我遵循了相同的步骤。我生成了一个 Shops Controller 并修改了路由和控制器如下:
1.) 路线
get 'users/:id' => 'user#show', as: :user
get 'shop/:id' => 'shop#show', as: :shop
2.) shop_controller.rb
class ShopController < ApplicationController
before_filter :authenticate_user!, only: :show
def show
@user = User.find_by_name(params[:id]) # for name instead of id
@listings = @user.listings
end
end
仅当我在用户页面 (localhost:3000/users/test) 时才有效,然后单击控制器的链接。然后切换到 (localhost:3000/shop/test)。
如果我尝试在其他任何地方点击链接
链接是->
<li><%= link_to "My Shop", :controller => "shop", :action => "show" %></li>
我是 Rails 的新手,如果有人能启发我,那就太好了:)
【问题讨论】:
-
嗨。您真的要按名称查找用户吗?我认为使用 id 是一种更好的方法。
-
严格的视觉和功能。但我不认为这是问题:(
-
我认为我的链接是错误的。但我仍然在黑暗中。
-
你能把你的 Shop 和 Listing 类放在这里吗?这是一个很小的问题,我正在写答案。
-
类是什么意思? :/ 我是 Rails 新手,还在学习 :) 抱歉
标签: ruby-on-rails undefined ruby-on-rails-4 rails-routing