Rails根据控制器呈现不同的视图

时间:2012-06-26 08:58:17

标签: ruby-on-rails render renderpartial

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

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

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

然后在我的部分:

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

这样可行,但它并不像最好的红宝石般的感觉。做事的方式。任何人都可以建议更好的方法吗?

由于

1 个答案:

答案 0 :(得分:2)

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

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

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

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