2011-04-19 167 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