我有一个选择框Rails Web应用程序添加值选择框:从控制器功能(Ruby on Rails的)
<%= select_tag :foo %>
我希望写这将填充的一个功能这个选择框有一些值。我需要编写什么代码才能做到这一点?
如果值被硬编码到函数中,那很好。
def populate
# what goes here?
end
我有一个选择框Rails Web应用程序添加值选择框:从控制器功能(Ruby on Rails的)
<%= select_tag :foo %>
我希望写这将填充的一个功能这个选择框有一些值。我需要编写什么代码才能做到这一点?
如果值被硬编码到函数中,那很好。
def populate
# what goes here?
end
看看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] }) %>
做像填充一个选择的帮手,最好做的事情。如果您的控制器被命名为MyController
,那么您可以在助手目录中有一个MyHelper
模块。助手内部的方法等将在您的视图模板中可用。因此,您可以在MyHelper
中使用populate_select
方法,并在控制器中执行所有您想要的操作。这更像是“Rails的方式”。 Helpers旨在处理模板需要的沉重的Ruby代码,因此您不必将其与XHTML混合使用。
谢谢!你将如何从控制器中调用它的函数返回options_for_select函数的结果,以便将其插入到选择框中? – Corey 2009-12-19 20:35:29
编辑我的答案以显示如何调用。 – 2009-12-19 22:52:50