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

时间:2014-09-25 14:56:07

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

我有一个包含一些用户的表单(friendly_id =>用户名)

当表单是新的时,我想在编辑模式下显示数据占位符,显示用户选择

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

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

如何让两件事情协同工作

  

<%= f.input_field:user_search_field,as :: select,                         class:'selected-select',data:{placeholder:'Select user ...'},collection:@ userss.map {| a |   [a.name,a.friendly_id]},                           include_blank:真实,                           选中:(@ user.friendly_id??[@ user.friendly_id]:'')

          %>

1 个答案:

答案 0 :(得分:3)

看起来您应该可以使用partials轻松完成此操作。所以基本上是这样的(我的例子使用simple_form 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的值并相应地填充表单。我假设用户是在编辑控制器操作中定义的。如果我对我的回答不满意,请提供更多详细信息,我很乐意提供帮助。