好的,你可以在下面看到我的模型和控制器。我希望能够做的是当用户添加新租约时,用户可以从数据库中已经存在的属性列表中选择property_id,还可以从tenant_id的文件租户列表中进行选择。 。我对rails很新,但我真的不知道如何做到这一点。在我的控制器中,我将@property = Property.all @tenant = Tenant.all设为可访问,但我不知道如何以我想要的方式利用它们。
租赁模式
class Lease < ActiveRecord::Base
attr_accessible :lease_end, :lease_start, :property_id, :tenant_id
belongs_to :tenant
belongs_to :property
end
物业模型
class Property < ActiveRecord::Base
attr_accessible :address_line_1, :city, :county, :image, :rent
belongs_to :lease
end
租户模式
class Tenant < ActiveRecord::Base
attr_accessible :email, :name, :phone
belongs_to :lease
end
租赁控制器方法,用于添加新租约和编辑租约
def new
@lease = Lease.new
@property = Property.all
@tenant = Tenant.all
respond_to do |format|
format.html # new.html.erb
format.json { render json: @lease }
end
end
# GET /leases/1/edit
def edit
@lease = Lease.find(params[:id])
@property = Property.all
@tenant = Tenant.all
end
编辑: 下拉框工作,但选项不是我想要的。我正在为租户和#为物业选择#。我想如果能得到租户名称和房产地址
_form使用 teresko 的建议更新文件代码
<%= form_for(@lease) do |f| %>
<% if @lease.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@lease.errors.count, "error") %> prohibited this lease from
being saved:</h2>
<ul>
<% @lease.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :tenant_id %><br />
<%= f.select :tenant, options_for_select(@tenants) %>
</div>
<div class="field">
<%= f.label :property_id %><br />
<%= f.select :property, options_for_select(@properties) %>
</div>
<div class="field">
<%= f.label :lease_start %><br />
<%= f.date_select :lease_start %>
</div>
<div class="field">
<%= f.label :lease_end %><br />
<%= f.date_select :lease_end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
答案 0 :(得分:1)
第一个提示:当您拥有许多属性时,最好使用@properties
,而不是@property
。同意@tenants
。
然后,您可以在新页面或编辑页面中进行设置:
<% form_for @lease do |f| %>
<%= f.select :property, options_for_select(@properties) %>
<%= f.select :tenant, options_for_select(@tenants) %>
<% end %>
当app/views/leases/_form.html.erb
和new
呈现相同的表单时,下一个提示是使用部分名为edit
的部分来设置上一个表单。然后,您的新视图和编辑视图将变为
<%= render :partial => 'form' %>
要显示特定选项,您可以阅读options_for_select或options_from_collection_for_select docs
<%= f.select :property, options_from_collection_for_select(@properties, 'id', 'name') %>
为您的案例选择最佳方法。