find方法无法接受params [:id]

时间:2011-07-16 04:54:02

标签: ruby-on-rails activerecord

def admission2
  puts params[:id]
  @student = Student.find(params[:id])
  @guardian = Guardian.new params[:guardian]
  if request.post? and @guardian.save
    redirect_to :controller => "student", :action => "admission2", :id => @student.id
  end
end

在给定的代码中,find方法抛出一个异常,说明

  Couldn't find Student without an ID

puts语句的输出显示params[:id]包含值。我确保给定id字段的记录始终存在于数据库中。

当我手动将一个数字作为find方法参数时,它有用,所以我猜这里找不到params[:id],还有其他办法吗?

我正在使用rails 2.3.5

2 个答案:

答案 0 :(得分:0)

这很奇怪。如果你这样做会有什么不同吗

@student = Student.find params[:id].to_i

答案 1 :(得分:0)

这是我的旧routes.rb文件:

map.connect ':controller/:action'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id/:id2'
map.connect ':controller/:action/:id.:format'

我刚刚从中移除了map.connect ':controller/:action',现在一切都在不断发挥作用。