Rails 表单(选择/选项) - 如何用 HAML 标记选定的选项?
Posted
技术标签:
【中文标题】Rails 表单(选择/选项) - 如何用 HAML 标记选定的选项?【英文标题】:Rails form (select/option) - how to mark selected option with HAML? 【发布时间】:2012-09-23 08:48:04 【问题描述】:在 HAML 的表单中标记当前选定选项值的最快、最优雅的方法是什么?
%form:action => '', :method => 'get'
%select:name => 'param_name'
%option:value => 'A' A data
%option:value => 'B' B data
一种方式:
- if params[:param_name] == "A"
%option:value => 'A', :selected => 'selected' A data
- else
%option:value => 'A' A data
但是当select
框有很多选项字段时这是不合适的...
【问题讨论】:
【参考方案1】:这样的事情会起作用(使用带有运算符=>
的旧“hashrocket 语法”)
%select
%option:value => "a", :selected => params[:x] == "a"= "a"
%option:value => "b", :selected => params[:x] == "b"= "b"
或者,在较新的 Ruby 版本(1.9 及更高版本)中:
%select
%optionvalue: "a", selected: params[:x] == "a"= "a"
%optionvalue: "b", selected: params[:x] == "b"= "b"
【讨论】:
selected:params[:x] 是做什么的? 默认选择值。 selected 的值可以是 true 或 false(== 计算结果)【参考方案2】:你应该释放 rails helpers 的力量。
For select
tag:
= select_tag :param_name, options_for_select([['A data', 'A'], ['B data', 'B']], params[:param_name])
此外,尽可能使用form_tag
或更好的form_for
(或更好的simple_form 或formtastic)代替原始%form
【讨论】:
如果您能够使用表单助手,这个答案肯定比在视图中编写原始表单标记更可取。 如果有一个将其包装在form_tag
或form_for
中的示例,答案会更好,HAML 语法的缩进很烦人以上是关于Rails 表单(选择/选项) - 如何用 HAML 标记选定的选项?的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails 表单添加带有文本框的“其他”选项以选择下拉菜单
如何根据Rails 5中的select选项从数据库中进行搜索输入
【Rails】如何用erb中的each转一个数组中的hash