Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Forms Rails 4:仅当新表单出现时才在表单部分中设置默认字段_Forms_Ruby On Rails 4_Haml - Fatal编程技术网

Forms Rails 4:仅当新表单出现时才在表单部分中设置默认字段

Forms Rails 4:仅当新表单出现时才在表单部分中设置默认字段,forms,ruby-on-rails-4,haml,Forms,Ruby On Rails 4,Haml,我尝试对new和edit操作使用相同的HAML partial,如果是新操作,还可以在表单中设置默认值。但是,使用类似于: = f.text_field :card_name, value: "Chase" 在呈现编辑操作时重写记录的存储值。如果没有两个单独的视图(一个用于新建,一个用于编辑),或者没有丑陋的if/else块,解决此问题的最佳方法是什么 另一个要求是该值实际显示在表单中,因此在控制器中简单地设置它不是一个选项。如何 = f.text_field :card_name, valu

我尝试对new和edit操作使用相同的HAML partial,如果是新操作,还可以在表单中设置默认值。但是,使用类似于:

= f.text_field :card_name, value: "Chase"
在呈现编辑操作时重写记录的存储值。如果没有两个单独的视图(一个用于新建,一个用于编辑),或者没有丑陋的if/else块,解决此问题的最佳方法是什么

另一个要求是该值实际显示在表单中,因此在控制器中简单地设置它不是一个选项。

如何

= f.text_field :card_name, value: (f.object.new_record? ? 'Chase' : f.object.card_name)
要使条件消失,我将尝试在初始化后通过ActiveRecord
执行此操作,您还可以执行以下操作:

= f.text_field card_name, value: (f.object.card_name.blank? ? "Chase" : f.object.card_name)

使用这种方法,如果卡名称为空,则仅设置字段。例如,如果您在新操作中将card_name设置为“something”,并且由于其他字段而导致错误,则card_name仍将是“something”,而不是“Chase”。如果在编辑操作中已经设置了字段,则将显示对象的值。

我认为,如果使用此语法,则在编辑视图中仍会有默认值,这将无法判断显示的值是来自记录还是作为默认值生成的。