Получение странного ноля в Rails с помощью Select - PullRequest
0 голосов
/ 21 октября 2009

У меня странная ноль проблема со следующим кодом.

Вид (часть):

<p>
  <%= label :maintenance, :name %>
  <%= text_field(:maintenance, :name, :size => 20) %>
</p>
<p>
  <%= label :maintenance, :type %>
  <%= select :maintenance, :type, @m_types  %>
</p>

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

метод контроллера:

def new
  @log = Log.new
  @maintenance = Maintenance.new

  @m_types = Maintenance.types
  @cars = Car.all

  print @maintenance

  if not params[:car].nil?
@log.car = params[:car]
  end

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

Я предполагаю, что это, должно быть, странная оценка Ruby, но я понятия не имею, что я ищу. Я искал вокруг с Google, но не зная, что вы ищете, это довольно сложно.

ТИА!

Спасибо всем, кто выручил, но я реорганизовал свои модели, изменил мой столбец наследования, и теперь он работает. Я думаю, что проблема заключалась в том, что я использовал: type в качестве столбца наследования, поэтому, когда я попросил установить: type в select, прежде чем я сделал text_field, он не знал, что использовал объект Maintenance, и он искал обычный объект. Любой нормальный объект Ruby использует поле: type для чего-то другого. Поэтому он искал: type для модуля, а не для String, как я пытался это сделать.

Вы можете видеть мою новую настройку , которая работает. Надеюсь, что кто-то может извлечь уроки из этого.

1 Ответ

1 голос
/ 22 октября 2009

Я настоятельно рекомендую вам использовать метод form_for для объявления ваших форм.

В вашем случае вы можете сделать (на ваш взгляд):

form_for @maintenance do |f|
  f.label :name
  f.text_field :name
end

Это прикрепит переменные формы к вашему экземпляру @ maintenance.

Ознакомьтесь с этим руководством для получения дополнительной информации о формах в Rails - Работа с объектами модели в формах

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