Rails / STI - 如何根据类型显示不同的表单?

时间:2016-03-05 20:02:39

标签: ruby-on-rails forms ruby-on-rails-4 simple-form sti

从同一模型继承有3种不同的类型。每个属性都有一个与其他属性无关的唯一属性。

如果每种类型都有链接,是否有办法使用相同的表单,但是动态显示每种类型的相关字段?

或者我是否必须为每个表单创建一个不同的表单并使用隐藏字段告诉控制器要创建哪种类型?

1 个答案:

答案 0 :(得分:0)

我假设您根据要显示的隐藏字段在查询字符串中传递变量

如果是这种情况,这就是我要做的事情

= simple_form_for(@model, :html => {:class => 'form-horizontal' }) do |f|
  ...
  - if params[:what_hiddind_filld_to_show] == 'type1'
    = f.input :fild_name, as: :hidden, , input_html: { value: '1' }
  - elsif params[:what_hiddind_filld_to_show] == 'type2'
    = f.input :fild_name, as: :hidden, , input_html: { value: '2' }
  - elsif params[:what_hiddind_filld_to_show] == 'type3'
    = f.input :fild_name, as: :hidden, , input_html: { value: '3' }
  - else
    = f.input :fild_name, as: :hidden, , input_html: { value: 'default' }

我希望这能让你走上正轨