routes.rb - 不支持控制器名称

时间:2014-03-27 18:49:38

标签: ruby-on-rails ruby postgresql activerecord

我有一个特殊的问题。这是routes.rb的一部分,它涉及:

resources :players
match '/players/:userid', :to => 'Players#show'

当您访问localhost:3000 / players / 1234时,会出现此错误:

  

'玩家'不是受支持的控制器名称。这可能导致潜在的路由问题。

控制器中的相关代码:

def show
  begin
    if Player.find_by(:uid => :userid) then
      @playerattributes = Player.find_by(:uid => :userid) 
      if player[:profile_complete] == true then
        @playerinfo = {
            :age => player[:age],
            :team => player[:team],
            :position => player[:position]
        }
      else
        @playerinfo = 0 
      end
    end
    player = Player.find_by(:uid => :userid)[:info]
rescue ActiveRecord::RecordNotFound
    redirect_to root_url        
    end
end

问题并没有结束。当页面加载时(它有时随机工作),这一行起作用: if Player.find_by(:uid => :userid) then 使用PostgreSQL,显示查询。而不是使用URL中的:userid值(即localhost:3000 / players / 1234将是1234),它只输入文本" userid"。

我错过了一些明显的东西吗?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:8)

更改

match '/players/:userid', :to => 'Players#show'

match '/players/:userid', :to => 'players#show'

Read more

要在控制器中读取用户ID值,请使用params[:userid],而不只是:userid

答案 1 :(得分:0)

通过这种方式写各个路线。

EG:请求的操作“浏览器url_name(任意)”,以:

'controller_nane#method_name'

您的情况应该是:

match  '/players/:userid', :to => 'players#show'

类似的获取请求:

get  '/players/:userid', :to => 'players#show'