Поле в форме рельсов для выбора объекта «belongs_to»
-
18-09-2019 - |
Вопрос
Ох, пожалуйста, потерпите меня...У меня есть модель для бронирования и модель для водителей.У водителя много бронирований, и бронирование принадлежит водителю.
При добавлении или редактировании бронирования я хочу, чтобы пользователь мог ввести имя пользователя водителя.Имена пользователей уникальны, и для конечного пользователя их проще, чем присваивать номер каждому водителю.
Вот как я это сделал:
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