2011-04-19 119 views
0

我有两种模式。事件和问题。 事件有很多问题。 我正试图从事件#show视图中创建一个新问题。 该链接出现在/ events /:event_id/questions/new之类。但当点击它会给出错误 -Rails:嵌套资源问题:新表单

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

你,你已经宣布私人的问题,控制器开始后自带全部也由私人和你的新的行动也宣告私人切断它和之前的私人粘贴,然后尝试

+0

感谢队友。有效。我如何只使一种方法是私人的? – 2011-04-19 14:47:47

+0

把它放在你的控制器的底部 – Mischa 2011-04-19 14:53:37

+0

你需要什么,应该是私人的,把它放在底部,并使其私密。 – 2011-04-19 14:58:35