我有一个用户的显示页面
1。)路线
get 'users/:id' => 'user#show', as: :user
2。)user_controller.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 ,所以我按照相同的步骤操作。我生成了一个商店控制器并修改了路线和控制器,如下所示:
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)。
如果我尝试点击其他任何地方的链接
链接是 - &gt;
<li><%= link_to "My Shop", :controller => "shop", :action => "show" %></li>
我对Rails相当新手,如果有人能够启发我会非常好的那样:)
答案 0 :(得分:2)
首先根据rails约定更正控制器的名称。名称应如下所示。
控制器/的 users_controller.rb 强>
class UsersController < ApplicationController
before_filter :authenticate_user!, only: :show
def show
@user = User.find(params[:id]) # Because Id can't be same for two users but name can be.
@listings = @user.listings
end
end
如果是shop_controller,那很好,因为商店不是模特。
控制器/的 shop_controller.rb 强>
class ShopController < ApplicationController
before_filter :authenticate_user!, only: :show
def show
@user = User.find(params[:id]) # Id can't be same for two users but name can be.
@listings = @user.listings
end
end
并提供这样的链接。
<%= link_to "My Wonderful Shop", {:controller => "shop", :action => "show", :id => @user.id} %>
在您的路线文件
中get 'shop/:id' => 'shop#show'