我已经阅读了很多关于在rake任务/后台作业/模型中渲染Rails部分和视图的内容.我在Stackoverflow和Web上发现的绝大多数事情描述了在Rails 3中工作的方法,但它们似乎过时了,我没有让它们工作(即使花了很多时间进行实验).
那么,如何在Rails 4中渲染后台作业中的部分?
这是迄今为止我已经研究过的最好的方法(在控制台中演示).
c = ApplicationController.new
result = c.render_to_string(partial: 'tweets/tweet', locals: {tweet: Tweet.first})
# =>
# Tweet Load (0.8ms) SELECT "tweets".* FROM "tweets" ORDER BY "tweets"."id" ASC LIMIT 1
# Author Load (0.6ms) SELECT "authors".* FROM "authors" WHERE "authors"."id" = $1 ORDER BY "authors"."id" ASC LIMIT 1 [["id", 1]]
# Status Load (0.6ms) SELECT "statuses".* FROM "statuses" WHERE "statuses"."twitter_id" = 367523226848866304 LIMIT 1
# Rendered tweets/_tweet_body.html.slim (17.5ms)
# Rendered tweets/_resolved_tweet.html.slim (23.7ms)
# Rendered tweets/_tweet.html.slim (28.1ms)
# ActionView::Template::Error: …
Run Code Online (Sandbox Code Playgroud) 我听说过命名方法参数将是Ruby 2.0中的功能改进之一.有人可以让我介绍他们目前在Ruby 2.0中建立的语法吗?
今天我|=
第一次看到了,我正在努力了解它是如何工作的以及它什么时候有用.
一些实验表明:
var |= nil
# => false
var |= false
# => false
var |= true
# => true
var |= 1
# => true
var |= nil
# => true
var |= false
# => true
var
# => true
Run Code Online (Sandbox Code Playgroud)
def link_to_mentioned_user(login)
result[:mentioned_usernames] |= [login]
url = File.join(base_url, login)
"<a href='#{url}' class='user-mention'>" +
"@#{login}" +
"</a>"
end
Run Code Online (Sandbox Code Playgroud)
我假设它的|=
作用类似于一个受保护的赋值||=
,但是将转换的返回值强制转换为布尔值.
这意味着只要var
是假的或未定义的,就会对表达式进行求值,并赋予对布尔值的返回值.一旦var |= some_truthy_expression
被调用,var
将true
进一步调用 …