2012-03-09 119 views
7

我正在使用Rails 3.1制作一个简单的Intranet应用程序。Rails 3下拉选择框?

我有一个链接一个模型,它具有以下字段:

name:string 
url:string 
colour:string 

我已经把颜色属性转换为类的观点,就像这样:

<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让我感到困惑!

回答

13

只需使用标准选择元素在你的形式来设置颜色变量:

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

完美,就是我想要的。谢谢! – dannymcc 2012-03-09 12:29:43

4

如果颜色是型号为你的颜色和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"]] %> 
+0

这是什么困惑我。没有设置颜色选择。我想将它们编码到表单中。 – dannymcc 2012-03-09 11:03:10

+0

哦,好的,我会更新答案。对不起,我误解了。 – miked 2012-03-09 11:11:56

3

您要使用的轨道帮手,因为那时rails会负责将数据转移到您的模型中。所以你很可能想要像下面这样的东西。

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

This Page可能有点罗嗦,但是它可以帮助你是如何考虑这个问题。