我是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
Run Code Online (Sandbox Code Playgroud)
我没有问题,但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)
Run Code Online (Sandbox Code Playgroud)
我不知道我在哪里犯了错误?
我认为你有一个句法问题:@project = Project.find{params[:id]}应该是@project = Project.find(params[:id]).ID需要作为参数传递.您的代码会创建一个ruby块.