【发布时间】:2011-03-22 18:10:15
【问题描述】:
我正在尝试在 rails 3 中编写一个应用程序,但在确定我希望用户进行的测试的路线和控制器时遇到了一些麻烦。此应用的基本要求是:
- 用户、测试和问题都在不同的模型中。
- 一个用户有_many测试。一个测试有_many Questions
- 在 user_profile 页面上提供指向 /test/new 的链接以创建测试记录。
- 在 /test/new 上提供指向 /test/:id/part1 的链接(其中 :id 是 test_id),以便用户可以完成测试的第一部分。问题将从数据库中检索并呈现在此页面上。
- 在 /test/:id/part1 上提供指向 /test/:id/part2 的链接,以便用户可以完成测试的第二部分。同样,问题是从数据库中检索出来的。
- 在 /test/:id/part2 上提供一个链接以提交测试并返回到用户的个人资料。
我已经完成了模型,甚至通过了他们的测试,所以我想我已经完成了第 1 部分和第 2 部分。
用户.rb
Class User < ActiveRecord::Base
has_many :tests
end
test.rb
Class Test < ActiveRecord::Base
belongs_to :user
has_many :questions
end
问题.rb
Class Question < ActiveRecrod::Base
belongs_to :test
end
当我尝试使用路由和控制器将这些模型放在一起时,我的问题就开始了。
routes.rb
resources :users
resources :tests do
member do
post 'part1'
post 'part2'
end
end
用户/show.html.erb
<%= link_to "Start The Test", new_test_path %>
测试/new.html.erb
<%= link_to "Part 1", part1_test_path(@test) %>
tests_controler.rb
class TestsController < ApplicationController
def new
@test = Test.new(current_user)
end
def part1
# still just a stub
end
end
当我点击链接参加第 1 部分测试时遇到此错误:
No route matches {:action=>"part1", :controller=>"tests", :id=>#<Test id: nil, taken_at: nil, user_id: nil, created_at: nil, updated_at: nil>}
对此的任何帮助将不胜感激。
【问题讨论】: