Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Rails STI时的条件分部_Ruby On Rails_Ruby On Rails 4_Partials_Sti - Fatal编程技术网

Ruby on rails 使用Rails STI时的条件分部

Ruby on rails 使用Rails STI时的条件分部,ruby-on-rails,ruby-on-rails-4,partials,sti,Ruby On Rails,Ruby On Rails 4,Partials,Sti,我有一个客户表,有两种类型:个人和公司。 我希望能够根据我创建的客户端类型呈现不同的部分(具有不同数量的字段) 有什么帮助吗? 谢谢 您可以比较类型属性值并渲染所需的部分。或者为这两个模型使用不同的控制器和视图您应该有两个链接,创建个人和创建公司。单击“创建人员”时,您仍然可以点击new页面,只需使用类似type=Person的参数(即new\u client\u path(:type=>“Person”))。为公司做相反的事 在控制器中,在每个对象之间切换以创建初始的空对象。如果没有typep

我有一个客户表,有两种类型:个人和公司。 我希望能够根据我创建的客户端类型呈现不同的部分(具有不同数量的字段)

有什么帮助吗?
谢谢

您可以比较类型属性值并渲染所需的部分。或者为这两个模型使用不同的控制器和视图

您应该有两个链接,创建个人和创建公司。单击“创建人员”时,您仍然可以点击
new
页面,只需使用类似
type=Person
的参数(即
new\u client\u path(:type=>“Person”)
)。为公司做相反的事

在控制器中,在每个对象之间切换以创建初始的空对象。如果没有
type
param,或者它无效,则默认设置type
person
,然后继续正常操作


new
页面上,您可以使用一个大的
if-else
来确定要显示的表单字段。或者更好的是,有两个partial,一个名为
\u person\u form
,另一个名为
\u company\u form
。然后在你的
new
页面中,只需执行类似于
render:partial=>“{@client.type}\u表单”
的操作,这样你就可以得到正确的表单。

是的,但我想对新表单执行此操作,所以我想还没有办法知道类型。我有两种不同的路线,但是。@BogdanPopa,有什么问题吗?在对象初始化时,只有在个人或公司模型上初始化对象时,才应具有类型值。@BogdanPopa。如果在客户机模型上初始化对象,则类型将为nil