繁体   English   中英

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

[英]run a method of a controller in the application view or render from app layout to another controller method

希望人们能理解我。 我将尽力解释这一点。 我在这里碰铁轨,然后每8-9个月触摸一两次。.因此,我忘记了很多事情,因此很抱歉,如果此问题的答案很简单,我实在不停地搜寻并且没有发现相同的问题。(还是我想)

我在其中一个应用程序中使用了带有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 -->

在名为_menu.html.erb的rssfeeds /菜单上

<% 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 %>

Rails有一个约定,即如果更多控制器使用了某些partial,则其位置为app/views/common/_partial_name 现在,无论需要什么地方,都可以通过<%= render 'common/partial_name' %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM