我有一个带有选择框的Rails Web应用程序:
<%= select_tag :foo %>
我正在寻找在控制器中编写一个函数,该函数将使用一些值填充此选择框。为了做到这一点,我需要编写什么代码?
如果将值硬编码到函数中,则可以。
def populate
# what goes here?
end
答案 0 :(得分:2)
看看options_for_select。它为您想要显示的内容构建html。
options_for_select([["Dollar", "$"], ["Kroner", "DKK"]])
<option value="$">Dollar</option>\n<option value="DKK">Kroner</option>
options_for_select([ "VISA", "MasterCard" ], "MasterCard")
<option>VISA</option>\n<option selected="selected">MasterCard</option>
options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")
<option value="$20">Basic</option>\n<option value="$40" selected="selected">Plus</option>
options_for_select([ "VISA", "MasterCard", "Discover" ], ["VISA", "Discover"])
<option selected="selected">VISA</option>\n<option>MasterCard</option>\n<option selected="selected">Discover</option>
您可以将此函数的结果传递给select_tag,如下所示:
<%= select_tag 'company_id', options_for_select(@current_user.active_companies.map { |c| [c.name, c.id] }) %>
答案 1 :(得分:0)
执行诸如填充选择之类的操作最好在帮助程序中完成。如果您的控制器名为MyController
,那么您可以在帮助程序目录中拥有一个MyHelper
模块。帮助器内的方法等将在视图模板中可用。因此,您可以在populate_select
中使用MyHelper
方法,并在控制器中执行您想要执行的所有操作。这更像是“Rails方式”。帮助程序旨在处理模板所需的繁重Ruby代码,因此您无需将其与XHTML混合使用。