Rails создают и обновляют модель Cant, решают пути - PullRequest
0 голосов
/ 14 января 2011

Не могу понять, почему редактирование и новые ссылки не работают.У меня есть контроллер с именем CargoController и модель автомобиля.CargoController:

  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

View CargoController index.erb имеет вид:

<%if !@cars.blank?%>
    <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 %>

представление редактировать и новое:1010 *

<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))' 

1 Ответ

0 голосов
/ 14 января 2011

Я думаю, что вы не создаете переменные экземпляра для каждого действия.

def new_auto
  @car = Car.new
end

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

И вы должны написать "resources: cars" rout.rb следующим образом:

resources :cars

Я думаю, что вы должны увидеть страницу new_auto.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...