Я пытаюсь написать приложение в rails 3, и у меня возникают проблемы с определением маршрутов и контроллеров для теста, который я хочу, чтобы пользователь прошел. Основные требования для этого приложения:
- Пользователи, тесты и вопросы представлены в отдельных моделях.
- Пользователь has_many Тесты. Тест имеет много вопросов
- Укажите ссылку на странице user_profile на / test / new для создания записи теста.
- Укажите ссылку на / test / new для / test /: id / part1 (где: id - это test_id), чтобы пользователь мог завершить первую часть теста. Вопросы будут получены из БД и представлены на этой странице.
- Укажите ссылку на / test /: id / part1 на / test /: id / part2, чтобы пользователь мог выполнить вторую часть теста. Опять же, вопросы получены из базы данных.
- Укажите ссылку на / test /: id / part2, чтобы отправить тест и вернуться в профиль пользователя.
Я закончил модели, которые даже прошли их тесты, поэтому я думаю, что я закончил части 1 и 2.
user.rb
Class User < ActiveRecord::Base
has_many :tests
end
test.rb
Class Test < ActiveRecord::Base
belongs_to :user
has_many :questions
end
question.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
Я получаю эту ошибку, когда нажимаю на ссылку, чтобы пройти первую часть теста:
No route matches {:action=>"part1", :controller=>"tests", :id=>#<Test id: nil, taken_at: nil, user_id: nil, created_at: nil, updated_at: nil>}
Любая помощь по этому вопросу будет принята с благодарностью.