Ruby on rails - 将动态表单下拉菜单值插入表

时间:2009-11-25 05:39:15

标签: ruby-on-rails drop-down-menu

我正在尝试将下拉菜单值插入名为 units 的表格中,并且该下拉值来自另一个名为 properties 的模型。

这是单位的架构。

create_table "units", :force => true do |t|
    t.string   "number"
    t.decimal  "monthly_rent"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "property_id"
  end

在我的观点/ units / new.html.erb上我有这个。

<% form_for @unit do |f| %>
<%= f.error_messages %>
<p>
    <%= f.label :property_id %>
    <br/>
    <%= select (:unit, :property_id, Property.all.collect  {|property| [property.name,property.id,]}) %>
</p>
<p>
    <%= f.label :number %>
    <br/>
    <%= f.text_field :number %>
</p>
<p>
    <%= f.label :monthly_rent %>
    <br/>
    <%= f.text_field :monthly_rent %>
</p>
<p>
    <%= f.submit "Submit" %>
</p>
<% end %>

这是我的控制器方法

def create
    @unit = Unit.new(params[:unit])
 # @unit.property_id = 1

    if @unit.save
      flash[:notice] = "Successfully created unit."
      redirect_to @unit
    else
      render :action => 'new'
    end
  end

只有numbermonthy_rent插入到表中,但property_id没有出现。有人可以帮我这个吗?谢谢

2 个答案:

答案 0 :(得分:1)

我可以从您向我们展示的内容中看到的可能问题是您的选择助手中的错误逗号。尝试像这样重写它(也使用表单助手方法):

<%= f.select :property_id, Property.all.collect {|property| [ property.name, property.id ] } %>

是的,创建params输出到你的日志会有很大的帮助。

答案 1 :(得分:0)

我想通了,抱歉,这是我的错误。它无法正常工作,因为property_id一旦我添加它有效,attr_accessible就没有添加到class Unit < ActiveRecord::Base belongs_to :property attr_accessible :number, :monthly_rent, :property_id end 。但我还是不知道确切的问题。

{{1}}