Поле в форме рельсов для выбора объекта - PullRequest
0 голосов
/ 08 марта 2010

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

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

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

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 в представлении редактирования, чтобы принять значение имени пользователя драйверов?

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

1 Ответ

1 голос
/ 08 марта 2010

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

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

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

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

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

...