带有提示的下拉列表select_tag占位符的问题

时间:2016-07-22 11:48:33

标签: ruby-on-rails html-select

我在使用rails select_tag帮助程序在下拉列表选择表单中设置占位符时遇到问题。使用提示选项存在占位符,但此方法会在下拉菜单中生成一个无法复制的值,您无法点击:

duplicate_dropdown

这是我的代码:

var current_date = new Date();
dateFormat(current_date, "dd/mm/yyyy");

有关使占位符值在此上下文中正常工作的任何想法或建议将不胜感激。很好地,我的意思是像这个页面上的类别下拉选择示例: http://www.joeabercrombie.com/category/audiobooks/

2 个答案:

答案 0 :(得分:1)

您需要的不是提示。提示是向用户显示的消息,以显示此下拉列表的含义。在您的Audible的页面示例中,在类别选择下拉列表中"选择类别"是提示。

您需要的是设置选定的选项。如果设置了params[:category],您希望从现有选择选项中选择一个选项。在这种情况下,重命名变量并传递"进行选择" options_for_select帮助select_tag的选项。

@posts = Post.all
@categories = Post.uniq.pluck(:category)
@prompt = "Select Category"

if params[:category]
   @posts = Post.where(category: params[:category])
   @selected_category = params[:category]
end

<%= form_tag(h_path, :method => "get") do %>
   <%= select_tag 'category', options_for_select(@categories, @selected_category), {onchange: "this.form.submit();", prompt: @prompt} %>
<% end %>

参考:select_tag (ActionView::Helpers::FormTagHelper) - APIdock

答案 1 :(得分:0)

您可以直接将params[:category]作为已选择的值传递给select_tag

并将uniq移至最后line:2

@posts = Post.all
@categories = Post.pluck(:category).uniq

if params[:category]
  @posts = Post.where(category: params[:category])
end

<%= form_tag(h_path, method: :get) do %>
   <%= select_tag :category, options_for_select(@categories, params[:category]), onchange: "this.form.submit();", prompt: "Select Category" %>
<% end %>