【问题标题】:Multi Controllers in one view Ruby on Rails一个视图中的多个控制器 Ruby on Rails
【发布时间】:2012-01-09 15:15:22
【问题描述】:

我开始学习 RoR 并且一直在学习一系列教程,但在一个视图中拥有一系列控制器时遇到了一个绊脚石。例如。我有一个用户控制器和一个技能控制器。技能使用 belongs_to 和 has_many 技能等与用户相关联。我在用户视图的索引上,无法弄清楚如何将与用户相关的技能放入该视图。

我看到它的方式是我需要创建一个基于值调用数据库的方法。如何在视图中调用此方法?抱歉,如果这对某些人来说似乎很明显,但我刚刚开始掌握它,任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:
    <% @users.each do |user| %>
        <h2><%= user.name %> </h2>
        <h3>Skills</h3>
        <ul>
            <% user.skills.each do |skill| %>
                <li> <%= skill.name %> </li>
            <% end %>
        </ul>
    <% end %>
    

    现在您的索引页面上显示了用户和技能。

    【讨论】:

    • 不幸的是它失败了。可能我没有解释我正在开发什么。我已经生成了一个名为 user 的脚手架,其中包含所有用户详细信息和技能是一个包含 user_id 的脚手架。每个人都有自己的观点等,但如果可能的话,不介意将它们结合起来
    【解决方案2】:

    当我在开发 Rails 应用程序时,我倾向于使用 一个 控制器来控制 许多 视图,而不是相反。

    我认为你想要的是控制器中的两个方法指向同一个视图。为此,在与您的视图名称不同的方法中,调用render "view"。或者,如果这两个方法的名称与您的目标视图不同,请在它们中调用 render "view"。

    【讨论】:

      【解决方案3】:

      您似乎在用户控制器中添加了非 REST 资源。

      您应该做的是为模型组合创建一个控制器,例如仪表板控制器,诀窍是找到一个有意义的名称。在您的情况下,您可能必须创建一个 UserSkill 控制器。

      这样您将保留 5 个 REST 操作。

      【讨论】:

        猜你喜欢
        • 2017-10-27
        • 1970-01-01
        • 2010-10-03
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多