【问题标题】:Populate drop-down select from multiple database tables从多个数据库表中填充下拉选择
【发布时间】:2011-09-12 17:00:05
【问题描述】:

我有一个应用程序,用户可以在该应用程序上创建三种类型的多个个人资料 - 社交、专业和特殊兴趣。我有三个模型为用户存储有关这些配置文件类型的信息。我需要创建一个配置文件名称的下拉选择菜单,以便在这些不同配置文件的视图之间导航。我知道可以使用collection_select 从一个数据库表中进行填充,但是如何从所有三个表中进行填充?

还可以在下拉导航栏上填充吗?个人资料 -> 查看我的个人资料 -> 动态填充所有个人资料?

<ul id="nav" class="dropdown dropdown-horizontal">
    <li><%= link_to("Profiles", new_profile_path()) %>
    <ul>
          <li><%= link_to("View my profiles") %>
              <ul>
                  <li> *some way to populate my list here* </li>
              </ul> 
          </li>
        </ul>
           .
           .
           .

感谢任何帮助。谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby drop-down-menu


    【解决方案1】:

    我建议除非绝对必要,否则您可以拥有一个 User 模型和一个 Profile 模型,然后在它们之间创建关联,而不是为三种不同的配置文件类型创建三个单独的模型。它将带来更简洁的设计。

    如果您绝对有必要拥有三个不同的配置文件模型,那么您可以像这样填充下拉列表。

    <select id="something">
      <%for profile in @social_profiles%>
        <option value="<%=profile.id%>"><%=profile.name%></option>
      <%end>
      <%for profile in @professional_profiles%>
        <option value="<%=profile.id%>><%=profile.name%></option>
      <%end%>
      .
      .
      .
    </select>
    

    【讨论】:

    • 我实际上没有称为配置文件的模型,原因是三个配置文件具有完全不同的字段/条目集。因此,我没有看到需要配置文件表,而是使用一对多关系将用户表与具有不同配置文件的三个直接相关联。我的用户模型有_many 社交和专业人士。我尝试用“用户”替换上面代码中的“配置文件”,但它似乎没有用。我是 Rails 新手,所以我的问题可能有点太天真了。
    • profile 上面是循环变量,@social_profiles 是实例变量。您必须查询社交模型以获取所有社交记录的列表。 @social_profiles = Social.all。同样适用于professional_profiles
    猜你喜欢
    • 2012-07-23
    • 2010-09-17
    • 2015-02-09
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2011-11-09
    相关资源
    最近更新 更多