Я создаю приложение, которое имеет модель Keynote и модель Story (а также модель User, которую я реализовал с помощью Devise).
У Keynotes много историй, а одна история принадлежит ключевому слову.
У меня проблемы с созданием новых историй, и я получаю следующую ошибку:
ActiveRecord :: RecordNotНайдено в StoriesController # create
Не удалось найти Keynote без идентификатора
Ошибка происходит в строке 17 story_controller.rb, которая
@keynote = Keynote.find(params[:keynote_id])
в методе создания.
Это часть моего story_controller.rb
class StoriesController < ApplicationController
before_filter :authenticate_user!, :except => [:show, :index]
def index
@keynote = Keynote.find(params[:keynote_id])
@stories = @keynote.stories
end
def new
@keynote = Keynote.find(params[:keynote_id])
@story = @keynote.stories.build
end
def create
if user_signed_in?
@keynote = Keynote.find(params[:keynote_id])
@story = @keynote.current_user.stories.build(params[:story])
if @story.save
flash[:notice] = 'Question submission succeeded'
redirect_to keynote_stories_path
else
render :action => 'new'
end
end
end
Это мой keynotes_controller.rb
class KeynotesController < ApplicationController
def index
@keynotes = Keynote.find :all, :order => 'id ASC'
end
def new
@keynote = Keynote.new
end
def show
@keynote = Keynote.find(params[:id])
end
def create
@keynote = Keynote.new(params[:keynote])
if @keynote.save
flash[:notice] = 'Keynote submission succeeded'
redirect_to keynotes_path
else
render :action => 'new'
end
end
end
Любая помощь будет очень признательна.
Edit:
Это параметры, когда я пытаюсь создать новую историю.
{ "utf8" => "✓",
"Authenticity_token" => "76odSpcfpTlnePxr + WBt36fVdiLD2z + Gnkxt / Eu1 / TU =",
"История" => { "имя" => "как"},
"Совершить" => "Отправить"}
Похоже, ID для Keynote не передается.
Это представление для StoriesController # new
<%= error_messages_for 'story' %>
<%= form_for @story do |f| %>
<p>
Question:<br />
<%= f.text_field :name %>
</p>
<p>
<%= submit_tag "Ask" %>
</p>
<% end %>
Это то, что у меня есть в моем файле rout.rb:
get "keynotes/index"
get "users/show"
devise_for :users
get "votes/create"
get "stories/index"
resources :keynotes do
resources :stories
end
resources :stories do
get 'bin', :on => :collection
resources :votes
end
resources :users
root :to => 'keynotes#index'