Ruby on Rails控制器意外执行

时间:2014-06-19 01:43:52

标签: javascript ruby-on-rails ruby

我正在使用控制器来显示一个在javascript中加载3D模型的页面。我似乎遇到的问题是,当我尝试让javascript加载3D模型文件ruby on rails而不是尝试解释它,使用文件名作为ID。

控制器

def show
    @design = Design.find(params[:id])
end

错误日志

  

在2014-06-12 20:11:30 -0700开始GET“/ designs / slotted_disk”为127.0.0.1由DesignsController处理#show as /

     

参数:{“id”=>“slotted_disk”}

     

用户加载(0.2ms)SELECT“users”。* FROM“users”WHERE“users”。“remember_token”='...'LIMIT 1

     

设计负载(0.1ms)SELECT“designs”。* FROM“designs”WHERE“designs”。“id”=? ORDER BY created_at DESC LIMIT 1 [[“id”,“slotted_disk”]]

     

在3毫秒内找不到404

     

ActiveRecord :: RecordNotFound(无法找到id = slotted_disk的Design):app / controllers / designs_controller.rb:19:in“show”

2 个答案:

答案 0 :(得分:0)

您似乎想要使用find_by

def show
  @design = Design.find_by name: params[:id]
end

find始终假定id列找到了它。 find_by让您找到使用其他列的内容。

答案 1 :(得分:0)

在您的控制台上试用此命令

rake routes

我的猜测是您的路线配置为

get devices/{id}映射到DeviceController的{​​{1}}操作

因此,当您执行Show时,它会将devices/slotted_disk视为slotted_disk参数,并且查找失败。

您需要按id配置要查找的路由。尝试在device_type

中添加它
相关问题