背景:
Organisation has_many :items
Item belongs_to :organisation组织表:
t.hstore "suppliers", array: true这是一个散列数组,可以在这样的组织页面上访问:
@organisation.suppliers =
[{"contact_id"=>"4ab343ad-1ebb-4afe-9d48-1814a93c2081", "contact_name"=>"Small Business Pty Ltd"},
{"contact_id"=>"42771b60-19a7-4692-af81-dd9f9b9362d4", "contact_name"=>"ABC Furniture"},
{"contact_id"=>"3e776c4b-ea9e-4bb1-96be-6b0c7a71a37f", "contact_name"=>"Bayside Club"}]项目表
t.hstore “selected_supplier”这应该是表格中的散列:
@item.selected_supplier = {"contact_id" => "4ab343ad-1ebb-4afe-9d48-1814a93c2081", "contact_name"=>"Small Business Pty Ltd"}注意:只有一个散列,而不是散列数组。
我能够在项目编辑页面的下拉列表中显示散列的@organisation.suppliers数组,如下所示:
<%= f.select :selected_supplier, options_for_select(@item.organisation.suppliers.collect {|x| [x['contact_name'], x['contact_id']] })%>问题1:如何在edit.html.erb视图( @organisation.suppliers之一)中进行选择,选择的哈希以哈希形式保存到@item.selected_supplier列中,如上面所示?
将@item.selected_supplier字段打印到show.html.erb视图中,如下所示:<%= @item.selected_supplier %> post保存编辑,只是显示:{},实际上没有任何内容保存到数据库中。
问题2:如何才能显示相同的元素列表,并选择所选的元素,即节省员额?
我不能添加一个“selected” = “true”或相当于一个供应商在组织中,因为它可能有多个项目,每个项目可能使用不同的供应商。
关于如何解决这个问题,我愿意听取其他建议。
Rails 5.0.0.1,Ruby 2.3.3
发布于 2017-03-17 05:07:13
类项< ActiveRecord::Base attr_accessor :contact_id def contact_id=( cid ) self.selected_supplier = organization.suppliers.detect {contact_id=‘’contact_id‘== ==} end
在控制器中,允许:contact_id而不是selected_supplier
在视图options_for_select(@item.organization.suppliers.collect f.select _s :contact_id [s‘’contact_name,s‘’contact_id‘]},f.object.contact_id)模型类项目def contact_id中的另一件事是’contact_id‘端
def contact_name (selected_supplier连成{})'contact_name‘端
发布于 2017-03-16 08:35:05
我不确定,但如果你还没试过,那就试试吧。
答案1
@item.selected_supplier = @item.organisation.suppliers.first或者更有条件的选择
@item.selected_supplier = @item.organisation.suppliers.detect {|s| s["contact_id"] = "4ab343ad-1ebb-4afe-9d48-1814a93c2081" }或
@item.selected_supplier = @item.organisation.suppliers.select {|s| s["contact_id"] = "4ab343ad-1ebb-4afe-9d48-1814a93c2081" }.first答案2
<%= f.select :selected_supplier, options_for_select(@item.organisation.suppliers.collect {|x| [x['contact_name'], x['contact_id']] },@item.selected_supplier)%>https://stackoverflow.com/questions/42828371
复制相似问题