我正在开发一个使用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让我感到困惑!
答案 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可能有点罗嗦,但它可能有助于你如何思考它。