从控制器函数(Ruby on Rails)向选择框添加值

时间:2009-12-19 20:23:36

标签: javascript ruby-on-rails ruby ajax model-view-controller

我有一个带有选择框的Rails Web应用程序:

<%= select_tag :foo %>

我正在寻找在控制器中编写一个函数,该函数将使用一些值填充此选择框。为了做到这一点,我需要编写什么代码?

如果将值硬编码到函数中,则可以。

def populate
  # what goes here?
end

2 个答案:

答案 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混合使用。