Несколько контроллеров в одном представлении Ruby on Rails - PullRequest
2 голосов
/ 30 ноября 2011

Я начинаю изучать RoR и выполняю ряд учебных пособий, но наткнулся на камень преткновения, касающийся наличия ряда контроллеров в одном представлении.Например, у меня есть пользовательский контроллер и контроллер навыков.Навык ассоциируется с Пользователем, используя ect скилменты own_to и has_many.Я нахожусь в индексе пользовательского представления и не могу понять, как поместить навыки, связанные с пользователем, в это представление.

На мой взгляд, мне нужно создать метод, который будет вызывать базу данных на основе значения.Как я могу вызвать этот метод внутри представления?Извините, если это кажется очевидным для некоторых людей, но я только начинаю разбираться с этим, и любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Когда я работаю с rails-приложениями, я склонен иметь один контроллер для многих просмотров, а не наоборот.

Что я думаю, вы хотитеэто два метода в вашем контроллере, которые указывают на одно и то же представление.Для достижения этого в методе, имя которого не совпадает с вашим представлением, вызовите render "view".Или, если оба метода имеют разные имена из целевого представления, вызовите render "view" в обоих из них.

1 голос
/ 30 ноября 2011
<% @users.each do |user| %>
    <h2><%= user.name %> </h2>
    <h3>Skills</h3>
    <ul>
        <% user.skills.each do |skill| %>
            <li> <%= skill.name %> </li>
        <% end %>
    </ul>
<% end %>

Теперь у вас есть пользователи и навыки, отображаемые на вашей странице индекса.

0 голосов
/ 30 ноября 2011

кажется, что вы добавляете не-REST ресурсы в свой пользовательский контроллер.

что вам нужно сделать, это создать контроллер для комбинации моделей, например контроллера панели мониторинга, хитрость в том, чтобы найтиимя, которое имеет смысл.В вашем случае вам, возможно, придется создать контроллер UserSkill.

Таким образом вы сохраните 5 действий REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...