Rails / STI - 如何根据类型显示不同的表单?
Rails / STI - How do I show a different form based on the type?
有 3 种不同的类型继承自同一模型。每个都有一个与其他无关的独特属性。
如果每种类型都有一个 link,有没有办法使用相同的表单,但动态显示每种类型的相关字段?
或者我是否必须为每个创建不同的表单并使用隐藏字段告诉控制器要创建哪种类型?
我假设您根据要显示的隐藏字段在查询字符串中传递变量
如果是这样的话我会这样做
= 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' }
我希望这能让你走上正轨
有 3 种不同的类型继承自同一模型。每个都有一个与其他无关的独特属性。
如果每种类型都有一个 link,有没有办法使用相同的表单,但动态显示每种类型的相关字段?
或者我是否必须为每个创建不同的表单并使用隐藏字段告诉控制器要创建哪种类型?
我假设您根据要显示的隐藏字段在查询字符串中传递变量
如果是这样的话我会这样做
= 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' }
我希望这能让你走上正轨