1

我的 rails 应用程序中有一个标签导航页面,它在我的所有视图中共享。在里面我有一个小的文本区域,它应该根据用户所在的页面而改变。

目前我通过向控制器添加一个变量并在渲染部分路径中使用它来做到这一点,如下所示:

class Myapp::WebsitesController < MyappController
  def set_up
    @page = 'websites/left_text_info'
  end 

然后在我的部分:

<%= render :partial => @page %>

这行得通,但感觉不是最好的“红宝石”做事方式。任何人都可以建议更好的方法吗?

谢谢

4

1 回答 1

2

您可以controller_name直接在视图中使用辅助方法并跳过控制器部分:

<%= render "#{controller_name}/left_text_info" %>

或者,如果唯一改变的是文本区域的内容,那么最好的方法可能是定义一个只返回其内容的辅助方法,这样您就不需要多个非常相似的部分文件。

module ApplicationHelper
  def text_area_content
    case controller_name
    when "users"
      "content for users"
    when "articles"
      "content for articles"
    else
      "other content"
    end
  end
end
于 2012-06-26T09:09:22.657 回答