我有一个控制器叫ProjectsController.默认情况下,它的操作会在app/views/projects中查找视图.我想更改所有方法(indexshownewedit等)的路径在控制器中.

例如:

class ProjectsController < ApplicationController

  #I'd like to be able to do something like this
  views_path 'views/mycustomfolder'

  def index
    #some code
  end

  def show
    #some code
  end

  def new
    #some code
  end

  def edit
    #some code
  end
end

请注意,我不是用render改变每个方法,而是为所有方法定义一个默认路径.这可能吗?如果是,怎么做?

非常感谢.

推荐答案

如果没有内置的方法,也许你可以为那个控制器覆盖render

class MyController < ApplicationController
  # actions ..

  private

  def render(*args)
    options = args.extract_options!
    options[:template] = "/mycustomfolder/#{params[:action]}"
    super(*(args << options))
  end
end

不确定这在实践中效果如何,或者它是否有效.

Ruby-on-rails相关问答推荐

方法和括号之间没有空格时出错

错误AESGCMOpen获取密码:消息身份验证失败:Golang解密GCM

删除链接不起作用,重定向 echo 示 Ruby

为什么 2 个关键字参数被解释为 1?

仅在两个子域间共享Rails cookies,并为所有其他子域使用单独的cookie

为什么是 json.partial!使用新的哈希语法传递本地时,jbuiler 模板中的行不执行?

如何验证 Rails 中的多态字段关联?

如何在 IRB/Rails 控制台中 suppress 返回值的输出?

Rails 将字符串与视图中的变量连接的最佳方法

ArgumentError:您需要使用 :if 提供至少一个验证

ActiveRecord 回调列表

如何避免 has_many :through 关系中的重复?

在 Rails 中,如何处理多个选中的复选框,只需拆分 , 或?

如何在 rspec 中运行单个测试?

在rails国际化yml文件中传递变量

您推荐哪些工具来分析 Rails 应用程序?

rake db:回滚不起作用?

Ruby:如何将一种方法接收到的所有参数和块传递给另一种方法?

ActiveModel::MissingAttributeError:无法使用 FactoryGirl 写入未知属性ad_id

按照给定 ID 数组的顺序按 ID 查找模型记录