简单形式的“已选择”属性未正确设置

时间:2019-03-01 20:53:15

标签: ruby-on-rails simple-form

我为模型设置了一个简单的表单。尽管无法正常工作。

<%= f.input :folder, collection: current_user.folders, label_method: :name, value_method: :slug, selected: params[:folder] %>

我正在通过参数设置输入的selected属性。因此,如果网址以?folder=First+Folder这样结束,则我希望输入内容在上面的代码(即current_user.folders)中设置的集合中进行搜索并将其设置为选中状态。它确实有效,但并非如此。

说选择标签中的选项是这样的

  • 第一个文件夹
  • 第二个文件夹
  • 第三文件夹

无论params [:folder]的值是什么, ,select标记始终会选择第一个选项。在这种情况下:“第一个文件夹”。 params[:folder]设置为“第二文件夹”还是“第三文件夹”都没有关系。它将始终设置为“第一个文件夹”或select标签中的第一个选项。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

  1. 选项而不是“ selected”将“ value:params [:folder]”放进去
  2. 我认为控制器中有一个更优雅的解决方案,假设您有模型“ File”。因为可以更改和选择值,所以值会错误
def new
  @file = File.new
  @file.folder = params[:folder]
end

答案 1 :(得分:0)

解决了。我需要将子弹传递给选定的属性,而不是名称。如果要实现此功能,则可能使用id而不是slug。无论如何,这对我有用。

<%= f.input :folder, 
  collection: current_user.folders, 
  label_method: :name, 
  value_method: :slug,
  selected: @folder.slug
%>