我在编辑表单上遇到了一些麻烦。由于某些原因,我的选择助手在编辑操作上无法正常工作。由于某种原因,似乎忽略了选项:prompt => true并且不显示“请选择”消息。但只有编辑动作,新动作才能正常工作。
表单部分的片段:
f.select :category_id, @categories, {:prompt => true}
编辑操作
def edit
@page = Page.find(params[:id])
@categories = Category.where(:cat_type=>"page").map { |c| [t("category.#{c.slug}",:default=>"#{c.name}"), c.id] }
end
新动作
def new
@page = Page.new
@categories = Category.where(:cat_type=>"page").map { |c| [t("category.#{c.slug}",:default=>"#{c.name}"), c.id] }
respond_to do |format|
format.html # new.html.erb
format.json { render json: @page }
end
end
有什么想法吗?
答案 0 :(得分:12)
f.select :category_id, @categories, :include_blank => "whatever your prompt says"
这项工作适合我。
但是,我通常会尽量避免使用rails表单助手进行提示,因为它们看起来似乎没有表现出来。
或者,我这样做了:
f.select :category_id, @categories.unshift(["whatever your prompt says", value])
将数组推送到@categories数组的前面
答案 1 :(得分:3)
来自Apidock:
select(object, method, choices, options = {}, html_options = {})
所以这会奏效:
f.select :category_id, options_from_collection_for_select(@categories, :id, :name), {prompt: 'Please select ...' }, { class: 'form-control' }
答案 2 :(得分:1)
它按预期工作。如果之前选择并保存了某个值,则不显示提示。
提示与选择 - "主要区别在于,如果选择已经有值,则:提示将不会显示,而:include_blank将始终显示。"
请参阅this API note。
答案 3 :(得分:0)
为具有提示值和html选项类的方法选择表单选项:
f.select(:subcription_with, options_for_select(['paypal', 'stripe']), {:prompt => 'Select Payment Method'}, {:class => "form-control slct-box"})