gpt4 book ai didi

ruby-on-rails - 如何将模型的值设置为 f.label

转载 作者:行者123 更新时间:2023-12-04 05:42:34 25 4
gpt4 key购买 nike

我正在使用 rails 3.2。

我有很多类型的模型。
有没有办法将模型的“值”设置为 field_for.label?

这就是我想要做的。

客户端模型

class Client < ActiveRecord::Base
attr_accessible :name, :renewal_month1, :renewal_month10, :renewal_month11, :renewal_month12, :renewal_month2, :renewal_month3, :renewal_month4, :renewal_month5, :renewal_month6, :renewal_month7, :renewal_month8, :renewal_month9, :sales_person_id, :usable, :user_id, :licenses_attributes

has_many :licenses, :dependent => :destroy
has_many :systems, :through => :licenses
accepts_nested_attributes_for :licenses

end

许可模式
class License < ActiveRecord::Base
attr_accessible :amount, :client_id, :system_id

belongs_to :client
belongs_to :system
def system_name
self.system.name
end

end

系统模型
class System < ActiveRecord::Base
attr_accessible :name, :sort

has_many :clients

has_many :licenses
has_many :clients, :through => :licenses

end

在客户端 Controller 中,我为所有系统构建了许可证对象。
def new
@client = Client.new
@title = "New Client"

System.all.each do |system|
@client.licenses.build(:system_id => system.id)
end

respond_to do |format|
format.html # new.html.erb
format.json { render json: @client }
end
end

在 _form.html.erb 中,我使用 fieds_for 作为许可证
<%= f.fields_for :licenses do |ff| %>
<tr>
<td><%= ff.label :system_id %></td>
</td>
<td> <%= ff.number_field :amount %>
<%= ff.hidden_field :system_id %>
<%= ff.hidden_field :system_name %>
</td>
</tr>
<% end %>

我得到的结果是这个
<tr>
<td><label for="client_licenses_attributes_0_system_id">System</label></td>
</td>
<td> <input id="client_licenses_attributes_0_amount" name="client[licenses_attributes][0][amount]" type="number" value="10" />
<input id="client_licenses_attributes_0_system_id" name="client[licenses_attributes][0][system_id]" type="hidden" value="1" />
<input id="client_licenses_attributes_0_system_name" name="client[licenses_attributes][0][system_name]" type="hidden" value="SYSTEMNAME" />
</td>
</tr>

我希望标签看起来像这样。
    <td><label for="client_licenses_attributes_0_system_id">SYSTEMNAME</label></td>

SYSTEMNAME 是模型 SYSTEM 的值。
我在 LICENSE 模型中有一个虚拟属性定义为 system_name。
我能够在 hidden_​​field 中获得 SYSTEMNAME,所以我认为模型和 Controller 很好。
我只是不知道如何将模型的值设置为标签。

最佳答案

为什么不能使用以下内容?

<%= ff.label :system_name %>

我认为下一个代码也应该工作
<%= ff.label :amount, ff.object.system_name %>

我无法测试这个,但我希望它会产生
<label for="client_licenses_attributes_0_amount">SYSTEMNAME</label>

请注意,它为金额字段创建了一个标签,以便当用户单击它时,金额字段将被聚焦。

关于ruby-on-rails - 如何将模型的值设置为 f.label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com