Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails4:链接到控制器_Ruby On Rails_Undefined_Ruby On Rails 4_Rails Routing - Fatal编程技术网

Ruby on rails Rails4:链接到控制器

Ruby on rails Rails4:链接到控制器,ruby-on-rails,undefined,ruby-on-rails-4,rails-routing,Ruby On Rails,Undefined,Ruby On Rails 4,Rails Routing,我有一个用户的显示页面,其中 1.)路线 2.)用户_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

我有一个用户的显示页面,其中

1.)路线

2.)用户_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
2.)车间控制器.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
class ShopController
仅当im在用户页面(localhost:3000/users/test)上单击指向控制器的链接时,此操作才有效。然后切换到(localhost:3000/shop/test)

如果我试着点击我得到的任何其他地方的链接

链接是->

<li><%= link_to "My Shop", :controller => "shop", :action => "show" %></li>
  • “店铺”,:操作=>“展示”%>

  • 我是Rails的新手,如果有人能告诉我这将是非常好的:)

    首先,按照Rails惯例更正控制器的名称。名称应如下所示

    控制器/用户_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
    
    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
    

    还是会犯那个错误。我认为这与rails如何获取shop:id或知道链接到哪里有关。由于您使用了
    as::shop
    ,因此应该能够使用
    创建链接。您好。是否确实要按名称查找用户?我认为使用id是一种更好的方式。它严格来说是可视化和功能化的。但我不认为这是问题所在:(我认为我的链接是错误的。但我仍然不清楚。你能把你的商店和列出的类放在这里吗。这是一个很小的问题,我正在写答案。你说的类是什么意思?:/我对Rails还是很陌生:)Sry
    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
    
    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'