在我的项目中,我使用的team_type_id取决于性别,年龄和分类; F.E.第三位女性高级球队的身份证号为3-2-1。
创建新团队时,我需要这些信息才能在后台生成team_type_id。所以我在选择字段中询问性别,年龄和分类,并尝试将这些信息传递给hidden_field,我生成ID如下:
<%= form_for(@team) do |f| %>
<%= select_tag(:gender_id, options_for_select([[I18n.t('basic.male'), 1], [I18n.t('basic.female'), 2]], 1), {:class => 'select-style'}) %>
<%= select_tag(:age_id... %>
<%= select_tag(:class_id... %>
<%= f.hidden_field :team_type_id, :value => :gender_id + :age_id + :class_id %>
<%= f.submit %>
<% end %>
但这并不奏效。问题是如何将gender_id等的值传递给hidden_field?
感谢您的帮助!
修改
这是我的控制器:
def create
team_type_id = params[:gender_id] + params[:age_id] + params[:class_id]
@team = Team.new(params[:team], team_type_id)
end
答案 0 :(得分:1)
唯一的选择是通过javascript进行操作,因为html是静态的,当页面加载时,你无法知道用户将选择哪个选项,因此你无法将这些值放在该隐藏字段中除非你使用javascript。
然而,在这种情况下,我建议处理数据服务器端,因为你必须始终注意,并不总是你编码的javascript是你将获得的javascript(用户可以在浏览器中更改javascript)
所以我建议你在控制器中这样做。
@team_type_id = params[:value] + "-" + params[:gender_id] + "-" + params[:age_id] + "-"+ params[:class_id]
但是,我不建议使用自定义ID。最好将team_type_id作为自动增量ID,你可以使用team_type_code。因为你如何区分具有相同身份的2支队伍?
@team_type_id = params[:value] + "-" + params[:gender_id] + "-" + params[:age_id] + "-"+ params[:class_id]
@team = Team.new(params[:team])
@team.team_type_id = @team_type_id
@team.save
干杯
答案 1 :(得分:1)
我认为team_type_id
是Team
模型的字符串类型属性。你可以这样做:
def create
team_type_id = [params[:gender_id],params[:age_id], params[:class_id]].join("-")
@team = Team.create!(params[:team].merge(team_type_id: team_type_id))
end