Rails =>从form_for中选择数据

时间:2016-05-10 07:42:58

标签: ruby-on-rails

在我的项目中,我使用的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

2 个答案:

答案 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_idTeam模型的字符串类型属性。你可以这样做:

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