2011-01-13 8 views
0

Ich kann nicht verstehen, warum bearbeiten und neue Links nicht funktioniert. Ich habe Controller namens CargoController und habe Modell Car. CargoController ist:Schienen erstellen und aktualisieren Modell Cant Pfade auflösen

def new_auto 

    end 

    def edit_auto 

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

Car-Modell ist:

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 

The View CargoController index.erb ist:

<%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 %> 

die Ansicht bearbeiten und neu ist:

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

Die Templ aß _form ist:

<%= 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 %> 

Also ich versuche, hinzuzufügen oder Auto Schienen zu aktualisieren fragen ein Auto-Controller oder schreiben

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

Was soll ich tun, damit es funktioniert? In einem Routen habe ich

get "cargo/index" 

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

Gibt es einen Grund, warum Sie keine new_auto/edit_auto-Aktionen anstelle der üblichen neuen/edit verwenden? Sie könnten Ressourcen verwenden: Autos leicht in diesem Fall. – raidfive

Antwort

0

Ich denke, dass Sie für jede Aktionen Instanzvariablen nicht schaffen.

def new_auto 
    @car = Car.new 
end 

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

Und Sie sollten "Ressourcen: Autos" schreiben routes.rb als follwing:

resources :cars 

Ich denke, dass Sie die new_auto Seite sehen können sollte.

Verwandte Themen