我有一个特殊的问题。这是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"。
我错过了一些明显的东西吗?
非常感谢任何帮助。
答案 0 :(得分:8)
更改
match '/players/:userid', :to => 'Players#show'
到
match '/players/:userid', :to => 'players#show'
要在控制器中读取用户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'