我有一个特殊的问题.这是routes.rb的一部分,它涉及到:
resources :players
match '/players/:userid', :to => 'Players#show'
Run Code Online (Sandbox Code Playgroud)
当您访问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
Run Code Online (Sandbox Code Playgroud)
问题并没有就此结束.当页面加载时(它有时随机工作),这一行起作用:
if Player.find_by(:uid => :userid) then
使用PostgreSQL,显示查询.它不是使用URL中的:userid值(即localhost:3000/players/1234将是1234),而只是输入文本"userid".
我错过了一些明显的东西吗
真的很感激任何帮助.
我有两个文件,generic_handler.go,本质上是这样的:
type Handler struct{
fields map[string]interface{}
}
func (handler *Handler) addField(key string, value interface{}){ some code }
Run Code Online (Sandbox Code Playgroud)
和 stat_handler.go:
type StatHandler Handler
Run Code Online (Sandbox Code Playgroud)
当我尝试调用(从 stat_handler.go 文件中)这样的方法时,我收到一个错误:
//inside some function
stathandler.addField("some field", "some value")
Run Code Online (Sandbox Code Playgroud)
它出错了type StatHandler has no field or method addField。即使我addField通过 make导出也是一样的AddField。这两个文件都位于同一个包中。
有什么我想念的吗?