0

첫째을 생성되지 않는, 당신이 보는 시간을내어하는 경우 내가 당신을 감사 할 수 있습니다. 감사 :).하나가

그래서, 나는 마침내 정상 자원의 _form.html.erb의 방법을 제대로 둥지 자원을 파악. 마지막 프로젝트는 위에서 아래로 중첩 된 다음 리소스를 갖습니다 : IDFs => Switches => Jacks. 현재 내가 모든 것을 나에게 다음과 같은 오류 제공하는 새로운 잭 ... 만들기를 통해 작업이 있습니다

NoMethodError in Jacks#new 

Showing /var/rails/network/app/views/jacks/_form.html.erb where line #1 raised: 

undefined method `model_name' for NilClass:Class 
Extracted source (around line #1): 

1: <%= form_for [@switch, @jack] do |f| %> 
2: <% if @jack.errors.any? %> 
3:  <div id="error_explanation"> 
4:  <h2><%= pluralize(@jack.errors.count, "error") %> prohibited this jack from being saved:</h2> 

내 모델의 모든 스캐 폴딩 있었다, 그리고 나는 모델을 제외하고, 자신의 파일의 많은 손도 안 연결하기 위해 컨트롤러를 연결하고 _form.html.erb 파일을 수정합니다. 나는 관련성이 있다고 생각하는 코드를 게시 할 것이지만 만약 당신이 그것을 본다면 나를 도울 수있는 다른 것이 있다면 알려주십시오.

응용 프로그램/컨트롤러/jacks_controller.rb :

... 
    def new 
    @jacks = Jack.new(:switch_id => params[:switch_id]) 

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

응용 프로그램/뷰/스위치/_form.html.erb :

<%= form_for [@idf, @switch] do |switch_form| %> 
    <% if @switch.errors.any? %> 
     <div id="error_explanation"> 
     <h2><%= pluralize(@switch.errors.count, "error") %> prohibited this switch from being saved:</h2> 

     <ul> 
     <% @switch.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
     <% end %> 
     </ul> 
     </div> 
    <% end %> 

    <div class="field"> 
     <%= switch_form.label :title %><br /> 
     <%= switch_form.text_field :title %> 
    </div> 
    <div class="field"> 
     <%= switch_form.label :model %><br /> 
     <%= switch_form.text_field :model %> 
    </div> 

    <% switch_form.fields_for :jacks do |jack_form| %> 
     <p> 
     <div class="field"> 
      <%= jack_form.label :port, 'Port:' %> 
      <%= jack_form.text_field :port %> 
     </div> 
     <div class="field"> 
      <%= jack_form.label :jack_number, 'Jack Number:' %> 
      <%= jack_form.text_field :jack_number %> 
     </div> 
     <div class="field"> 
      <%= jack_from.label :room_number, 'Room Number:' %> 
      <%= jack_form.text_field :room_number %> 
     </div> 
     <% unless jack_form.object.new_record? %> 
      <div> 
      <%= jack_form.label :_delete, 'Remove:' %> 
      <%= jack_form.check_box :_delete %> 
      </div> 
     <% end %> 
     <p> 
    <% end %> 

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

응용 프로그램/뷰/잭/_form.html.erb :

<%= form_for [@jack.switch, @jack] do |f| %> 
    <% if @jack.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@jack.errors.count, "error") %> prohibited this jack from being saved:</h2> 

     <ul> 
     <% @jack.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :port %><br /> 
    <%= f.number_field :port %> 
    </div> 
    <div class="field"> 
    <%= f.label :jack_number %><br /> 
    <%= f.text_field :jack_number %> 
    </div> 
    <div class="field"> 
    <%= f.label :room_number %><br /> 
    <%= f.text_field :room_number %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

은 이미 스택 오버플로 유사한 몇 가지 질문에서 일부 코드를 구현하려고했습니다,하지만 아무것도 작동하는 것 같다 없습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 또한보고 싶은 다른 코드가 있으면 알려주세요.

다시 한번 감사드립니다!

답변

1

당신은 당신의 상위 자원에서 @jack 객체를 구축하려고 했습니까? 즉

def new 
    # find Jack's parent 
    parent = JacksParent.find(:parent_id) 
    @jacks = parent.jacks.build(:switch_id => params[:switch_id]) 

    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render :json => @jack } 
    end 
end 
+0

이 예의 경우 또는 실제 코드에서 오타가 있습니까? 당신은 예 문 – Bryan

+0

렌더링하여 JSON에서 개체하지만 "@jack"를 구성 할 때 "@jacks"가. 그것이 내가 한 줄로 전환하기 전에 원래 가지고 있었던 것입니다. 나도 당신을했지만, 원래 내가했다 : 는 = Switch.find은 (PARAMS는 [: switch_id]) 스위치 잭 = 내가 믿는 switch.jacks.new 당신이 구축되어있는 곳이 아닙니다 그럼에도 불구하고 그것을 시도해 보았습니다. 그래도 작동이 안되는. –

+0

확실히 오타였습니다. 여전히 오류가 발생하지만 새로운 문제입니다. 제가 일하게하거나 더 많은 도움이 필요하면 알려 드리겠습니다. 고맙습니다! –