【问题标题】:Rails 3.2/4: Is there a way to easily render a template (partial, whatever...) from the console?Rails 3.2/4:有没有办法从控制台轻松渲染模板(部分,无论如何......)?
【发布时间】:2013-08-28 17:24:17
【问题描述】:

我一直在寻找一种简单的方法来呈现视图(或模板)。我只在互联网上看到过复杂的解决方案,包括获取渲染引擎、传递上下文,这通常是一个使用原始视图路径初始化的动作视图实例,这些路径是从 ActionController::Base 获取的,然后我终于可以传递局部变量,当然,如果我没有在模板中使用任何实例变量,或者我没有使用辅助方法,我必须手动插入/包含所有内容,然后我仍然有一些关于相对的问题部分的位置,它们不是在 Rails 上下文之外推断出来的.. uhf... 没有一个主要对象我可以从中调用一个简单的#render 方法吗?

【问题讨论】:

  • 您为什么要从控制台执行此操作?似乎是一个奇怪的用例。你最好使用像 Liquid liquidmarkup.org 这样的东西
  • 我猜你可以有一个 ruby​​ 文件来完成所有这些复杂的事情,并且在你运行控制台时只包含那个 ruby​​ 文件。你到底想达到什么目的?如果你想调试你的模板,那么在你的模板中放一个调试器……
  • 我厌倦了为我的茉莉花规格手动编写模板。我也不想让我的 rspec 或 cucumber 脚本为我的 jasmine 规范渲染东西来测试(依赖太多)。所以,我在实际开始 jasmine:ci 任务之前预渲染了必要的部分/模板。
  • @ADAM,我既不想寻找替代渲染引擎,也不想被广告轰炸。我什至没有提到我使用的是哪个渲染引擎。这意味着它是无关紧要的。

标签: ruby-on-rails actionview renderpartial


【解决方案1】:

如果您在 Rails 控制台中工作,您可以调用:

> app.get '/'
> response = app.response
> body = response.body

【讨论】:

  • 不错的功能!它在某些方面可能很有用,但我担心每当视图需要用户登录才能呈现我想看到的完整响应主体时,我会遇到一些问题。但这是我见过的最接近这个问题的答案。你知道我如何将登录的用户会话隐藏到其中吗?
  • 我不知道您需要登录。有几种方法可以这样做,但您可能会从发布另一个问题中受益最多。根据您对用户进行身份验证的方式,您可以将控制台中的控制器扩充为skip_before_filter,您可以更改app.controller.current_user,您可以通过发布到适当的路由来实际登录,您可以使用warden/rack 中间件,您可以更改app.session等。这取决于您的实现。
  • 您可能会从这些相关帖子中受益:* stackoverflow.com/questions/9544338/… * stackoverflow.com/questions/6209663/…
  • 我认为我们现在偏离了主要话题。我不在乎处理会话,我想轻松呈现模板。
猜你喜欢
  • 2014-03-31
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多