我不太清楚我是否理解非捕获组的工作原理.我正在寻找一个正则表达式来产生这个结果:5.214
.我认为下面的正则表达式可行,但它正在取代包括非捕获组在内的所有内容.如何编写正则表达式才能替换捕获组?
"5,214".gsub(/(?:\d)(,)(?:\d)/, '.')
# => ".14"
Run Code Online (Sandbox Code Playgroud)
我想要的结果:
"5,214".gsub(some_regex)
#=> "5.214
Run Code Online (Sandbox Code Playgroud) 我试图设置一个包含特殊字符的Heroku配置变量,$
但我不知道如何正确地逃避它.我尝试将其封装在引号中,但得到了相同的结果.
例:
heroku config:set EMAIL_PASSWORD=xxxxx$xxxxxxxx
=> EMAIL_PASSWORD: xxxxx
heroku config:set EMAIL_PASSWORD="xxxxx$xxxxxxxx"
=> EMAIL_PASSWORD: xxxxx
Run Code Online (Sandbox Code Playgroud) 根据Heroku 文档:
Heroku现在缓存50mb的tmp/cache/assets,这是资产管道的缓存目录,用于存储中间文件.这意味着未来的资产编译将更快,因为不必重新计算这些文件.
我的问题是如何手动重置或删除此缓存,以便我的所有资产都必须再次预编译?我尝试过heroku run console
,Rails.cache.clear
但它没有用.我想重置缓存的原因是我已经更改了config.action_controller.asset_host
我的production.rb
文件,但由于缓存,Heroku没有接受更改.
我通过:collection选项将一个集合(@feed_items)传递给_feed_item部分.在_feed_item部分内部,我想渲染另一个部分_like_button.在_like_button partial中,我希望能够访问集合的特定成员.我应该从_feed_item部分传递到_like_button部分?
@feed_items = current_user.user_feed.order("id DESC").limit(5)
Run Code Online (Sandbox Code Playgroud)
_feed.html.erb
<%= render partial: 'shared/feed_item', collection: @feed_items %>
Run Code Online (Sandbox Code Playgroud)
_feed_item.html.erb
<%= render 'likes/like_button', ????? %>
Run Code Online (Sandbox Code Playgroud)
_like_button.html.erb
<% if like = current_user.likes.find_by_feed_id(feed_item.id) %>
Run Code Online (Sandbox Code Playgroud)
编辑
根据以下答案传递局部变量:
<%= render :partial => 'likes/like_button', :locals =>{:feed_item => feed_item} %>
Run Code Online (Sandbox Code Playgroud)
但是,在提交之后,我正在ActionView::Template::Error (undefined local variable or method 'feed_item'
尝试通过ajax再次呈现表单.如何通过ajax调用再次传递局部变量?
调节器
class LikesController < ApplicationController
def create
@like = Like.create(params[:like])
@feed = @like.feed
render :toggle
end
def destroy
like = Like.find(params[:id]).destroy
@feed = …
Run Code Online (Sandbox Code Playgroud) 我正在使用paypal-recurring gem来处理Rails应用程序中的定期付款.我的大部分代码来自这个优秀的Railscast,但我还想添加一个payment_notification模型来接受IPN回调并存储任何相关数据.这个Railscast讨论了如何设置通知.但是,我很难搞清楚如何将paypal重复出现的宝石IPN回调发送到我的PaymentNotification模型.
如何设置:ipn_url以正确地将IPN回调写入我的PaymentNotification模型.到目前为止我尝试了以下内容:
1)添加ipn_url: "http://my-app-name.com/payment_notifications"
到流程方法(在选项下)或payment_notifications_url
2)尝试在此GitHub问题页面底部建议的解决方案
3)使用Paypal的即时付款通知(IPN)模拟器发送到"http://my-app-name.com/payment_notifications",但我收到一个错误:IPN传递失败.HTTP错误代码401:未经授权
编辑
我已经能够成功模拟IPN到我的payments_notifications_url的交付.现在我只需要弄清楚如何指出定期发送的gem将ipn发送到那里.
任何指针都将非常感激.以下是我目前的一些代码.如果我忘记了任何相关部分,请告诉我.
PaypalPayment模型
class PaypalPayment
def initialize(subscription)
@subscription = subscription
end
def checkout_details
process :checkout_details
end
def checkout_url(options)
process(:checkout, options).checkout_url
end
def make_recurring
process :request_payment
process :create_recurring_profile, period: :monthly, frequency: 1, start_at: Time.zone.now
end
def cancel_recurring
process :cancel
end
private
def process(action, options = {})
options = options.reverse_merge(
token: @subscription.paypal_payment_token,
payer_id: @subscription.paypal_customer_token,
description: @subscription.plan.name,
amount: @subscription.plan.monthly_price,
currency: "JPY"
)
response = …
Run Code Online (Sandbox Code Playgroud) 我的rails应用程序中有一个ajax请求,它从我的控制器操作返回一个变量.在控制器动作中,我有一个循环,可能需要一些时间才能通过.
调节器
def myAction
$j = 1
until $j > list_size do
array << { :foo => $j }
$j +=1;
end
@myvariable = array.to_json
end
Run Code Online (Sandbox Code Playgroud)
myAction.js.erb
var myVariable = JSON.parse("<%= escape_javascript(raw @myvariable) %>");
for (var k = 0; k < myVariable.length; k++) {
$("#myDiv").append(myVariable[k].foo);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将循环的每个阶段的结果呈现给js.erb partial而不是等待循环完成.这是否可以在不中断循环并在循环结束之前提前结束动作的情况下实现?也许是这样的(伪代码是错误的):
调节器
def myAction
$j = 1
until $j > list_size do
array << { :foo => $j }
render array.to_json
$j +=1;
end
end
Run Code Online (Sandbox Code Playgroud)
myAction.js.erb
var myVariable = JSON.parse("<%= escape_javascript(raw @myvariable) %>"); …
Run Code Online (Sandbox Code Playgroud) 我有一个哈希,我想返回哈希值的最大值的键(或键/值对).因此,如果只有一个真正的最大值,它将返回该一个键; 但是,如果有多个具有相同值的键/值对,则它将返回所有这些键.我怎样才能在Ruby中实现这一目标?
my_hash.max_by {|k,v| v} #only returns one key/value pair
Run Code Online (Sandbox Code Playgroud) 我想在Ruby on Rails上使用globalize3 gem时实现一个简单的搜索功能.由于模型的转换存储在单独的表中,因此下面的代码不起作用,因为products表中不再有:name字段.如何调整下面的代码以使搜索功能正常?
products_controller.rb
@products = Product.search(params[:search]).all
Run Code Online (Sandbox Code Playgroud)
index.html.erb
<%= form_tag products_path, method: :get do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", name: nil %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
模型
class Product < ActiveRecord::Base
translates :name
attr_accessible :name, :price, :released_at
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
scoped
end
end
end
Run Code Online (Sandbox Code Playgroud) 我有一个按特定顺序排序的模型.我的目标是从模型中找到一条记录,其中所有先前记录的特定列的总和等于某个数字.下面的例子告诉我我需要的东西,但它非常慢,特别是对于一个相当大的表.有没有更快的方法来解决product.id所有以前产品的积分总和= 100000?
total_points = 0
find_point_level = 100000
@products = Product.order("id").all
@products.each do |product|
total_points = product.points + total_points
@find_product = product.id
break if total_points >= find_point_level
end
Run Code Online (Sandbox Code Playgroud)
更新
以下是一些解决方案的一些时间.这通过大约60,000条记录.时间适用于ActiveRecord.
原始示例(上图):
2685.0ms
1238.8ms
1428.0ms
使用find_each的原始示例:
799.6ms
799.4ms
797.8ms
创建一个总和的新列:
181.3ms
170.7ms
172.2ms
我正在尝试解压缩 Microsoft Office 文件(.docx 和 .pptx),修改一些内容,然后重新压缩为新的 .docx 或 .pptx 文件。
我成功地使用 .docx 文件执行此操作:
1)$ unzip .../test.docx
2)修改document.xml
文件中的部分内容
3)$ zip -r rezipped.docx *
使用上述过程,我可以在 Microsoft Word 中成功打开新文档 (rezipped.docx) 并查看更改的内容。
然后我对 .pptx 尝试了相同的过程,但没有成功。
1)$ unzip .../test.pptx
2)修改slide1.xml
文件中的一些内容
例如简单的文本更改<a:t>Hello World</a:t>
:<a:t>Hi World</a:t>
3)$ zip -r rezipped.pptx *
当我尝试在 Microsoft PowerPoint 2008 for Mac 版本 12.0 中打开 rezipped.pptx 时,收到以下错误消息:
访问 Macintosh rezipped.pptx 时出错
但是,我可以在 Keynote 中打开该文件,没有任何问题。
我尝试了相同的实验,但我只修改了docProps
文件夹中的一个文件(即 app.xml 或 core.xml),并且我能够重新压缩它并在 Microsoft PowerPoint …
ruby ×4
heroku ×2
ajax ×1
caching ×1
globalize3 ×1
hash ×1
javascript ×1
max ×1
openxml ×1
paypal ×1
paypal-ipn ×1
performance ×1
powerpoint ×1
regex ×1
search ×1
xml ×1