在应用程序视图中运行控制器的方法,或从应用程序布局渲染到另一个控制器方法

时间:2014-10-31 14:53:24

标签: ruby-on-rails ruby twitter-bootstrap twitter

我希望人们能理解我......对不起,如果没有。我会尽力解释这个问题。 我在这里触摸轨道,然后每8-9个月触摸一次或两次..所以我忘记了很多事情,如果这个问题回复是通过obvios的方式对不起,我老实说我的搜索并没有找到相同的问题。(或者我认为)

我在我的一个应用程序中使用带有twitter bootstrap的rails,顶部和右侧的菜单包含我想要在数据库中创建新行时动态创建的元素。 例: rss feed 1 rss feed 2 .... 截至目前,菜单是静态的..我必须在代码中手动输入。 我正在尝试动态地执行此操作,如果它们都在同一个控制器中,这将非常容易,但由于我的菜单视图位于应用程序控制器上,我有问题从那里访问我的rssfeed控制器以获取列表行和并自动创建菜单。 这就是我所拥有的: 在application.html.erb布局:

<div class="container nav-collapse">
        <ul class="nav">
          <%= render 'rssfeeds/menu' %>
        </ul>
      </div><!--/.nav-collapse -->
rssfeeds /菜单上的

叫_menu.html.erb

<% unless  @my_rssfeeds.nil?  %>
  <% @rssfeeds.each do |feed| %>
    <li><%= link_to "#{feed.title}", "rssfeeds/#{feed.id}"  %></li>
  <% end %>
<% end %>

所以首先我尝试将_menu放在应用程序控制器视图文件夹中,但是如果这是调用rssfeed控制器将它放在rssfeed视图文件夹中,这就是我用路径调用它的原因。

任何想法最好的方法是什么?

这是日志中的另一个例子,它可能有所帮助:

 Rendered rssfeeds/_feed.html.erb (2.2ms)
 Rendered rssfeeds/show.html.erb within layouts/application (6.5ms)
 Rendered common/_menu.html.erb (0.4ms)
 Completed 500 Internal Server Error in 614ms

 ActionView::Template::Error (undefined method `each' for nil:NilClass):
 1: <% @rssfeeds.each do |feed| %>
 2:   <li><%= link_to "#{feed.title}", "rssfeeds/#{feed.id}"  %></li>
 3: <% end %>

1 个答案:

答案 0 :(得分:0)

Rails有一个惯例,即如果更多控制器使用某些部分,则其位置为app/views/common/_partial_name。现在,无论何处需要部分,都可以通过<%= render 'common/partial_name' %>

访问