我想在Rails的div中渲染

我想在Rails的div中渲染

可以说我有一个名为“ Statistics”或“ Friends”的300X300px块,该块需要一些数据库对象和逻辑操作,而这些操作通常应放置在控制器中,该控制器准备了一些实例变量,这些变量将在视图/部分视图中很好地显示。

可以从我网站的许多页面调用此块,跨越各种控制器和动作。

我该如何解决这个问题,而无需在控制器内重复代码,也无需在视图内放置逻辑。

一个糟糕的解决方案是将SQL查询放置在视图内,或在单个控制器/动作生成预期HTML的地方使用iframe。

任何想法将不胜感激。

最佳答案

我认为这是您应该使用辅助方法执行的操作。为部分变量而不是实例变量使用locals可能是一个好主意,以免污染视图的命名空间:

module ApplicatonHelper

  def friends_block
    friends = Friend.where(...)
    # Assuming the 'friends_block' partial is in a directory 'app/views/shared'
    render :partial => "shared/friends_block", :locals => {:friends => friends}
  end

end


friends_block部分将使用局部变量:

<div id="friends_block">
  <% friends.each do |s| %>
    ...
  <% end %>
</div>


其他视图只使用helper方法,而不必担心其他任何事情:

<%= friends_block %>

关于ruby-on-rails - 我想在Rails的div中渲染 Controller / Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10244922/

10-10 21:14