我有一个包含一些用户的表单(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]:'')
%>
答案 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的值并相应地填充表单。我假设用户是在编辑控制器操作中定义的。如果我对我的回答不满意,请提供更多详细信息,我很乐意提供帮助。