2012-04-22 1 views
3

사용자가 을 만들 때 값을 유지하고 싶습니다. 따라서 사용자가 필드에 오류가 있으면 사용자가 페이지를 볼 수 있습니다. 그/그녀는 이미 인쇄 params).Rails 3 - NilClass에 대한 정의되지 않은 메소드`model_name ':'new '메소드를 렌더링하려고 할 때의 클래스

<legend>Order's creating</legend> 

<%= form_for @order, :html => {:class => "form-horizontal"} do |f| %> 
    <%= field_set_tag do %>  
    <div class="control-group"> 
     <%= f.label :number_of_order, "Number of order", :class => "control-label" %> 

     <div class="controls"> 
     <%= f.text_field :number_of_order, 
         :class => "span2",       
         :placeholder => @everpresent_field_placeholder %> 
     </div> 
    </div> 

    <%= f.submit "Create", :class => "btn btn-large btn-success" %> 
    <% end %> 
<% end %> 

을하지만 주문의 수의 잘못을 입력하고 클릭 할 때 나는 그런 오류 "만들기": 그래서 나는 새로운 질서에 대한 다음

컨트롤러에게

class OrdersController < ApplicationController 
    ... 

    def new 
    @everpresent_field_placeholder = "Fill that" 
    @order = Order.new 
    end 

    def create 
    order = Order.new(params[:order]) 

    if order.save 
     flash[:success] = "Yay! Order created!" 
    else 
     render 'new' 
     flash[:error] = order.errors.full_messages.to_sentence :last_word_connector => ", ",   
                  :two_words_connector => ", " 
    end 
    end 
end 

보기를 할 :

NoMethodError in Orders#create 

Showing .../app/views/orders/new.html.erb where line #3 raised: 

undefined method `model_name' for NilClass:Class 

Extracted source (around line #3): 

1: <legend>Order's creating</legend> 
2: 
3: <%= form_for @order, :html => {:class => "form-horizontal"} do |f| %> 
4: <%= field_set_tag do %>  
5:  <div class="control-group"> 
6:  <%= f.label :number_of_order, "Number of order", :class => "control-label" %> 

내가 뭘 잘못 했니?

답변

4

render 'new'를 호출하면 해당 컨트롤러 메서드를 호출하지 않습니다 - 그것은 단지 해당 작업과 관련된 템플릿을 렌더링합니다. 그게 당신의 create 조치는 결코 @order 설정하지 - 당신은 일을 해결 것이다, 당신의 create 행동 @orderorder에 대한 참조를 대체 어쩌면합니다.

+0

네, 맞습니다! 고맙습니다! – ExiRe

관련 문제