Ruby on rails rails 4,简单表单,选择下拉列表,如果未选择值,则包含空白或数据占位符,否则显示所选值

Ruby on rails rails 4,简单表单,选择下拉列表,如果未选择值,则包含空白或数据占位符,否则显示所选值,ruby-on-rails,ruby-on-rails-4,simple-form,Ruby On Rails,Ruby On Rails 4,Simple Form,我有一个带有某个用户的表单(友好的\u id=>用户名) 当表单为新表单时,我希望在编辑模式下显示数据占位符,否则显示所选用户 这就是我要做的, 如果我只使用占位符,当我没有定义@user时,它在添加模式下工作,在编辑表单中,它不会显示要在选定模式下编辑的用户 如果我只使用选定的属性,它将在编辑模式下工作,即显示下拉列表中选定的用户,但在新形式下,它将选择下拉列表中的第一个用户,数据占位符不起作用 我怎样才能使这两件事一起工作 看起来您应该能够使用partials轻松地完成这项工作。基本上是这样

我有一个带有某个用户的表单(友好的\u id=>用户名)

当表单为新表单时,我希望在编辑模式下显示数据占位符,否则显示所选用户

这就是我要做的, 如果我只使用占位符,当我没有定义@user时,它在添加模式下工作,在编辑表单中,它不会显示要在选定模式下编辑的用户

如果我只使用选定的属性,它将在编辑模式下工作,即显示下拉列表中选定的用户,但在新形式下,它将选择下拉列表中的第一个用户,数据占位符不起作用

我怎样才能使这两件事一起工作


看起来您应该能够使用partials轻松地完成这项工作。基本上是这样的(我的例子使用简单的gem):

在用户视图文件夹中创建一个名为_form的分部。在本部分中,将所有字段作为表单的一部分。例如:

= f.input :first_name
= f.input :last_name
= f.input :user_serch_field, as: :select, class: "chosen-select", collection: @users, value_method: :friendly_id, prompt: 'Select User'
然后在新页面中,以以下内容为例:

= simple_form_for @user do |f|
 = render partial: 'form' locals: {f: f}
 = f.submit
在编辑表单中,执行相同的操作:

= simple_form_for @user do |f|
 = render partial: 'form' locals: {f: f}
 = f.submit

你也可以把提交按钮放在你的部分,这取决于你。当编辑表单呈现部分内容时,它应该提取@user的值并相应地填充表单。我假设用户是在编辑控制器操作中定义的。如果我对我的答案不满意,请提供更多细节,我很乐意提供帮助。

看来您应该能够通过使用partials轻松做到这一点。基本上是这样的(我的例子使用简单的gem):

在用户视图文件夹中创建一个名为_form的分部。在本部分中,将所有字段作为表单的一部分。例如:

= f.input :first_name
= f.input :last_name
= f.input :user_serch_field, as: :select, class: "chosen-select", collection: @users, value_method: :friendly_id, prompt: 'Select User'
然后在新页面中,以以下内容为例:

= simple_form_for @user do |f|
 = render partial: 'form' locals: {f: f}
 = f.submit
在编辑表单中,执行相同的操作:

= simple_form_for @user do |f|
 = render partial: 'form' locals: {f: f}
 = f.submit
你也可以把提交按钮放在你的部分,这取决于你。当编辑表单呈现部分内容时,它应该提取@user的值并相应地填充表单。我假设用户是在编辑控制器操作中定义的。如果我对我的答案不满意,请提供更多的细节,我很乐意提供帮助