Я могу создать игру, в этой игре я могу создать правила, у меня есть кнопка, которая «завершает» правило, изменив логическое значение столбца Rule:completed на false, что подтолкнет его к представлению «Rules Completed», у меня есть кнопку, которая «обновляет» Правило, изменив логическое значение :completed в столбце Rule на true.
Итак, моя следующая задача — создать метод create в новом контроллере Score, который:
- С помощью того же действия button_to «Завершено»,
- Находит правило этой кнопки_to и вставляет этот идентификатор правила в новую таблицу Score в столбце "rule_id".
- Он также отправляет время завершения (время, когда пользователь нажимает кнопку) в таблицу Score, столбец «complete_time»,
Что я пробовал, так это просто скопировать большую часть деталей метода create в контроллер Rule, а именно:
def create
@rule = @game.rules.new(params[:rule])
if @rule.save
flash[:notice] = "You have added a Rule to your Game!"
redirect_to game_url(@game)
else
flash[:error] = "We couldn't add your Rule."
redirect_to game_url(@game)
end
end
Мои последние попытки повторить это - опубликовать rule_id в таблице Score, столбец «rule_id» следующим образом:
def create
@rule = Rule.find(params[:id])
@score = @rule.scores.new(params[:rule_id])
if @score.save
flash[:notice] = "You scored!"
redirect_to game_url(@game)
else
flash[:error] = "Wide right, try again."
redirect_to game_url(@game)
end
end
моя новая оценка БД:
class CreateScores < ActiveRecord::Migration
def change
create_table :scores do |t|
t.integer :rule_id
t.datetime :completed_time
t.timestamps
end
end
end
мое предлагаемое действие кнопки Score:
<%= button_to "Score!", score_path(@game.id,rule.id) %>
и маршруты установлены как:
Tgom::Application.routes.draw do
resources :games do
resources :rules do
resources :scores do
end
end
end
match 'games/:game_id/rules/:id/complete' => 'rules#complete', :as => :complete_rule
match 'games/:game_id/rules/:rule_id/scores' => 'scores#create', :as => :score
match 'games/:game_id/rules/:id/uncomplete' => 'rules#uncomplete', :as => :uncomplete_rule
root :to => 'games#index'
Текущая ошибка для этой настройки читается:
ActiveRecord::RecordNotFound in ScoresController#create
Couldn't find Rule without an ID
Rails.root: c:/Sites/tgom
app/controllers/scores_controller.rb:9:in `create'