0

哦,请多多包涵……我有一个预订模型和一个司机模型。一个司机有很多预订,一个预订属于一个司机。

添加或编辑预订时,我希望用户能够输入司机的用户名。对于最终用户来说,用户名是唯一的,并且比给每个司机一个号码更容易。

现在这就是我的做法:

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

这段代码可以很好地提交,但是当表单被加载时,它会显示对象的引用(例如#),我需要它来显示用户名。如何在编辑视图的 form_for 中更改 <%= f.text_field :driver %> 以获取驱动程序用户名的值?

我是否以正确的方式进行此操作,还是有一种非常简单的rails方式来做我需要的事情?

4

1 回答 1

1

“但是当表单加载时”是指它无法创建或正在编辑时?您能否发布您的完整更新并创建操作。

params[:booking][:driver] = @driver.username 应该用字符串而不是对象填充您的参数,尽管我不确定这是否真的是您想要做的。如果它为空白,则不要将其设置为 nil,而是将其留空, nil 是一个对象,这可能是您看到“#”的原因

您在这里所做的似乎不正确,无论如何,坚持使用驱动程序的选择框可能更有意义,其中字段是 driver_id。如果您真的想使用文本框,那么我会帮助您吗?只需先发布您的代码。

你见过这个吗?它应该有助于指导您:

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

于 2010-03-08T14:00:39.867 回答