如何在app控制器中添加基于变量的image / template / js / css加载路径?

时间:2011-01-03 21:58:26

标签: ruby-on-rails ruby

所以,我有一堆合作伙伴,他们的模板和图像存储在视图,公共/图像,公共/样式表,公共/ javascripts目录下。

例如,合作伙伴'foo'的图片存储在public/images/foo

此合作伙伴是一个实例变量@partner,可在应用程序级别访问。

问题是,我在各处都这样做:<%= image_tag "/images/#{@partner}/image.jpg" %>或在locations_controller中:<% redirect_to "/locations/#{@partner}/index" %> ......

问题的加载路径部分而不是使用帮助程序的一个原因:我们必须具体<% render :template => "/locations/#{@partner}/index" %>,因为Rails默认查找/ locations / index。

我怎么能让自己更容易?我有@partner后如何添加加载路径?

使用Ruby 1.8.7和Rails 2.3.4

1 个答案:

答案 0 :(得分:1)

你在控制器中的重定向是非常糟糕的做法

你应该做点什么:

redirect_to get_path(@partner)

然后在您的控制器中

def get_path(partner)
  case partner
  when "partner1"
    partner1_path
  ...
  end
end

关于你的照片,你应该创建一个帮手。

def get_pic(partner, image)
  image_tag "/images/#{partner}/#{image}"
end

在你看来

<%= get_pic(@partner, "image.jpg" %>