2011-01-13 6 views
0

편집 및 새 링크가 작동하지 않는 이유를 이해할 수 없습니다. 나는 CargoController라는 컨트롤러를 가지고 있고 Model Car를 가지고있다. CargoController은 다음과 같습니다레일이 모델을 생성하고 업데이트합니다. Cant resolve paths

def new_auto 

    end 

    def edit_auto 

    end 
    def index 
    @cars=Car.find_all_by_UserId(session[:user_id]) 
    if @cars.nil? 
    end 
    end 

자동차 모델은 다음과 같습니다

class Car < ActiveRecord::Base 
    validates_presence_of  :TransportTypeId 
    validates_presence_of  :CarModelId 
    set_primary_key :CarId 
    has_one :TransportType 
    has_one :CarModel 
    belongs_to :User 
    has_many :PropertyOfCar, :dependent => :destroy 
    has_many :CarProperty, :through => :PropertyOfCar 
end 

보기 CargoController의 index.erb은 다음과 같습니다

<%if [email protected]?%> 
    <table width="100%" border="0" cellpadding="0px" cellspacing=1px"> 
     <% @cars.each do |car| %> 
     <tr valign="top" class="<%= cycle('list-line-odd', 'list-line-even') %>"> 
     <td> 
      <table border="0" width="100%" style="color:black"> 
      <tr> 
       <td width="15%" align="left" valign="top" >Тип ТС:</td> 
       <td width="70%" align="left" valign="top"><%= TransportType.find_by_TransportTypeId(car.TransportTypeId).Name %></td> 
       <td align="right" valign="top" rowspan="2"> 
       <img alt="" src="/images/Truck-icon.png"/> 
       </td> 
      </tr> 
      <tr> 
       <td width="15%" align="left" valign="top">Car model:</td> 
       <td width="70%" align="left" valign="top"><%= CarModel.find_by_CarModelId(car.CarModelId).ModelName %></td> 
      </tr> 
      <tr> 
       <td align="center" valign="top" colspan="3"> 
        <label class="Chars"> Properties</label> 
       </td> 
      </tr> 
      <tr colspan="3"> 
       <td> 
       <%= button_to 'Edit', :controller=>:cargo,:action=>:edit_auto,:id=>car.CarId %> 
       </td> 
      </tr> 
      </table> 
     </td> 
     </tr> 
    <% end %> 
    </table> 
    <% end %> 

보기, 편집 및 새로운입니다

<div class="center"> 
<%= render 'form' %> 
</div> 

템플릿 먹고 _form은 다음과 같습니다

<%= form_for(@car) do |form| %> 
<table > 
     <tr> 
     <td> 
      <label for="transport_type">Car Type:</label> 
     </td> 
     <td> 
      <%= form.select(:TransportTypeId, TransportType.all.collect {|p| [ p.Name, p.TransportTypeId ] }, { :include_blank => 'Select type'},{:style=>'width: 200px'}) %> 
     </td> 
     </tr> 
     <tr> 
     <td> 
      <label for="transport_type">Car model:</label> 
     </td> 
     <td> 
      <%= form.select(:CarModelId, CarModel.all.collect {|p| [ p.ModelName, p.CarModelId ] }, { :include_blank => 'Select model' },{:style=>'width: 200px'}) %> 
     </td> 
     </tr> 
     <tr> 
     <td colspan="2"> 
      <%= button_to "add property",{:controller=>:cargo,:action=>:new_property},{:class =>"Button_style"} %> 
     </td> 
     </tr> 
     <tr> 
     <td colspan="2" align="left"> 
      <%= form.submit "Add car", :class => "submit" ,:class =>"Button_style"%> 
     </td> 
     </tr> 
    </table> 
<% end %> 

그럼 내가 추가하거나 자동차 레일 자동차 컨트롤러를 요청하거나

ActionView::Template::Error (undefined method `model_name' for NilClass:Class): 
    1: <%= form_for(@car) do |form| %> 
    2: <table > 
    3:  <tr> 
    4:   <td>. 

무엇 내가 그것을 작동하도록 할 것이다 쓰기 업데이트하려고? 경로에서 나는

get "cargo/index" 

    get "cargo/new_auto" 
match ':controller(/:action(/:id))' 
+0

일반적인 new/edit 대신 new_auto/edit_auto 작업을 사용하지 않는 이유가 있습니까? 이 경우에는 자동차를 쉽게 사용할 수 있습니다. – raidfive

답변

0

난 당신이 각 작업에 대한 인스턴스 변수를 생성하지 않는 생각이있다.

def new_auto 
    @car = Car.new 
end 

def edit_auto 
    @car = Car.find(params[:id]) 
end 

그리고 당신은 "자원 : 자동차"작성해야 follwing을 같이 routes.rb을 :

resources :cars 

난 당신이 new_auto 페이지를 참조 할 수 있어야한다고 생각합니다.