我正在尝试将下拉菜单值插入名为 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
只有number
和monthy_rent
插入到表中,但property_id
没有出现。有人可以帮我这个吗?谢谢
答案 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}}