Rails: проблема с вложенными ресурсами: новая форма - PullRequest
0 голосов
/ 19 апреля 2011

У меня две модели. События и вопросы. Событие имеет много вопросов. Я пытаюсь создать новый вопрос из представления Events # show. Ссылка выглядит как что-то вроде / events /: event_id / questions / new. Но при нажатии выдает ошибки -

undefined method `model_name' for NilClass:Class

Я предполагаю, что произошла ошибка либо с моим _form.html, либо с новым методом в контроллере вопросов.

Может кто-нибудь помочь, пожалуйста?

Event.rb

class Event < ActiveRecord::Base

  has_many :questions

end

Question.rb

class Question < ActiveRecord::Base
   belongs_to :event

end

routes.rb

resources :events do

    resources :questions 

end

События - show.html.erb

<p> <%= link_to "Ask", new_event_question_path(@event) %> </p>

Вопрос к контроллеру

before_filter(:get_event)

  private
def get_event
    @event = Event.find(params[:event_id])
end

 def new
    @question = Question.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @question }
    end
  end

_form.html.erb

<%= form_for([@event,@question]) do |f| %>
  <% if @question.errors.any? %>
    <div id="error_explanation">

........
........
......
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

вы объявили приватным в начале контроллера вопросов, все, что приходит после этого, также становится приватным, а ваше новое действие также объявляется приватным, вырежьте его и вставьте перед приватным, а затем попробуйте

1 голос
/ 19 апреля 2011

Прочитайте эти ресурсы:

  1. http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

  2. http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

  3. http://railscasts.com/episodes/196-nested-model-form-part-1

Это должно помочь вам настроить ваши модели и приступить к работе.

...