Вопрос

Ох, пожалуйста, потерпите меня...У меня есть модель для бронирования и модель для водителей.У водителя много бронирований, и бронирование принадлежит водителю.

При добавлении или редактировании бронирования я хочу, чтобы пользователь мог ввести имя пользователя водителя.Имена пользователей уникальны, и для конечного пользователя их проще, чем присваивать номер каждому водителю.

Вот как я это сделал:

def create
  if params[:booking][:driver].empty? 
    params[:booking][:driver] = nil 
  else
    @driver = Driver.find(:first, :conditions => { :username => params[:booking][:driver] })
    params[:booking][:driver] = @driver
  end

Этот код отлично работает для отправки, но когда форма загружается, он показывает ссылку на объект (например.#), и мне нужно, чтобы оно отображало имя пользователя.Как я могу изменить <%= f.text_field :driver %> в form_for в представлении редактирования, чтобы принять значение имени пользователя драйвера?

Правильно ли я делаю это, или есть очень простой способ сделать то, что мне нужно?

Это было полезно?

Решение

«но когда форма загружается», вы имеете в виду, когда она не создается или когда вы редактируете?Можете ли вы опубликовать полное обновление и создать действия, пожалуйста.

params[:booking][:driver] = @driver.username должен заполнить ваш параметр строкой, а не объектом, хотя я не уверен, что это действительно то, что вы хотите сделать.Вместо того, чтобы устанавливать значение nil, если оно пустое, просто оставьте его пустым, nil — это объект, поэтому, возможно, вы видите символ «#».

То, что вы здесь делаете, кажется неправильным, вероятно, в любом случае имеет смысл просто придерживаться поля выбора драйверов, где поле — это driver_id.Если вы действительно хотите использовать текстовое поле, я вам помогу?Просто сначала опубликуйте свой код.

Вы видели это?Это должно помочь вам немного больше:

http://railscasts.com/episodes/57-create-model-through-text-field

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top