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_tagform_for 中的示例,答案会更好,HAML 语法的缩进很烦人

以上是关于Rails 表单(选择/选项) - 如何用 HAML 标记选定的选项?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 表单添加带有文本框的“其他”选项以选择下拉菜单

如何用rails制作授权系统?

如何根据Rails 5中的select选项从数据库中进行搜索输入

【Rails】如何用erb中的each转一个数组中的hash

Rails 类型的 webapp 中的“模型”如何用函数式编程语言实现?

在 HTMX 中,如何为选择表单元素中的每个选项请求特定的 URL?