【问题标题】:populating select box from controller function in Rails从 Rails 中的控制器功能填充选择框
【发布时间】:2009-12-19 08:07:23
【问题描述】:

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

<%= select_tag :foo %>

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

正在使用 observe_field 调用函数:

<%= observe_field :foo, :url => { :action => :populate } %>

如果这些值被硬编码到函数中,那很好。

def populate
  # what goes here?
end

谢谢!

【问题讨论】:

    标签: javascript ruby-on-rails ajax


    【解决方案1】:

    试试这样的...

    在您的 application_helper.rb 中,输入以下内容:

    $MEMBERROLE = ['Student', 'Coach', 'Staff', 'Administrator']
    

    那么在你看来,你可以放如下:

     <p>
       <%= f.label :role %><br />
       <%= f.select(:role, options_for_select($MEMBERROLE.collect{|x| [x, $MEMBERROLE.index(x)]}, @member.role)) %>
     </p>
    

    这是假设您有一个看起来像这样的 Member 模型:

      create_table "members", :force => true do |t|
        t.string "name"
        t.integer "role"
      end
    

    这是一种非常简单的方法。你也可以将角色作为一个单独的表,但我认为这对于你正在寻找的东西来说太过分了......

    【讨论】:

      【解决方案2】:

      我想你误解了observe_field 的作用。当字段更改时,它会执行一些 javascript。如果你能告诉我们更多关于你想要做什么的细节,那就太好了。

      例如,您是否尝试根据您在另一个字段中选择的内容更改选择中的值?

      【讨论】:

      • @dvyjones, I'm looking to change the values in the select using the "populate" function which is triggered using the observe_field helper method when the value of the select change.基本上我只是想弄清楚如何从控制器中定义的函数中将值放入选择中。最终我可能会扩展它来做更多的事情,但现在我只是想弄清楚基础知识。这有帮助吗?
      • 排序。您需要在您的视图目录中添加populate.js.erbpopulate.js.rjs 视图。然后你需要从那里调用东西。 (谷歌 RJS 了解更多信息)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2011-03-20
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多