Ruby on Rails查找 - 找到错误的对象?

时间:2013-01-05 19:42:05

标签: ruby-on-rails find

我是Ruby on Rails的新手。 我正在努力建立一对多的协会。我有一个“项目”,项目应该有很多“Taskbundle”。 那看起来很好。

现在我想在页面上只显示为所选项目过滤的任务包。

我是在ProjectController类中创建的:

def select
    puts "==Projects=="
    puts params[:id]

    @project = Project.find{params[:id]}
    puts @project.id
    session[:project_id] = @project.id

    puts session[:project_id]

    redirect_to taskbundles_path
end

我到达那里没有问题,但是find方法找到id为3的项目,而不是id为4的项目?我检查过,id为4的项目存在。

输出

==Projects==
4
3
3


Started GET "/projects/select/4" for 127.0.0.1 at 2013-01-05 20:19:03 +0100
Processing by ProjectsController#select as HTML
  Parameters: {"id"=>"4"}
  ?[1m?[35mProject Load (0.0ms)?[0m  SELECT "projects".* FROM "projects"
Redirected to http://localhost:3000/taskbundles
Completed 302 Found in 3ms (ActiveRecord: 0.0ms)

我不知道我在哪里犯了错误?

2 个答案:

答案 0 :(得分:5)

我认为你遇到了句法问题:@project = Project.find{params[:id]}应该是@project = Project.find(params[:id])。 ID需要作为参数传递。您的代码会创建一个ruby块。

答案 1 :(得分:1)

我认为你应该使用 @project = Project.find_by {params [:id]}而不是Project.find {params [:id]}

如果id不存在,find方法将给你异常并停止执行剩余代码,就好像你使用find_by方法一样,如果数据库中没有id,它将返回nil。 / p>