Rails 3下拉选择框?

时间:2012-03-09 10:53:18

标签: ruby-on-rails drop-down-menu css-selectors

我正在开发一个使用Rails 3.1创建的简单Intranet应用程序。

我有一个链接模型,其中包含以下字段:

name:string
url:string
colour:string

我已将color属性放入视图中的类中,如下所示:

<a href="linkaddress" class="<%= link.colour %>">Link Name</a>

目前在新链接表单中我只有一个简单的表单输入,用户可以在其中输入任何内容,它将成为预期的href类。

我想要做的是创建预设选项的下拉列表,这些选项只是红色,绿色和蓝色(作为示例)。由于这看起来相当简单,我认为没有必要帮助。

我已经在SO上阅读了一些其他问题和答案,他们似乎在显示您的名字后跟一个ID号的示例。我只想要下面的代码:

<select name="colour">
 <option value="red">Red</option>
 <option value="green">Green</option>
 <option value="blue">Blue</option>
</select>

我确信这很简单,但我不能理解它。我已经阅读了Rails API信息,而select_for_tag让我感到困惑!

3 个答案:

答案 0 :(得分:13)

只需在表单中使用标准的select元素来设置颜色变量:

<%= f.select :colour, options_for_select([["Red", "red"], ["Green", "green"]], @link.colour) %>

答案 1 :(得分:4)

其中Color是颜色的模型名称,f是表单构建器对象:

 <%= f.collection_select :colour, Colour.all, :url, :name %>

使用颜色的url作为值和名称作为文本,这将是最简单,最直接的方法。如果您同时需要值和文本的名称,则可以将:url更改为:name。

此外,对于语义,您可能还想在控制器中设置@colours集合并使用它而不是从视图中调用模型(以替换Colour.all)。

更新:根据您的评论,如果您没有该集合的模型,只想对您的选择和值进行硬编码,请尝试:

 <%= select :your_obj, :linkaddress, [["Red","red"],["Green", "green"],["Blue", "blue"]] %>

答案 2 :(得分:3)

您想使用rails helper,因为rails会负责将数据移动到您的模型中。所以你很可能想要以下内容。

<%= f.select :colour, ["red","green","blue"] %>

This Page可能有点罗嗦,但它可能有助于你如何思考它。