我有这两个模型:
class Presentation
include Mongoid::Document
embeds_many :presentation_rows
end
class PresentationRow
include Mongoid::Document
embedded_in :presentation
end
Run Code Online (Sandbox Code Playgroud)
在我的presentation_rows_controller.rb中,我有以下几行代码:
def show
@presentation = Presentation.find(params[:id])
@presentation_rows = @presentation.presentation_rows
end
def destroy
...
...
end
Run Code Online (Sandbox Code Playgroud)
在我的presentation_rows/show.html.haml中,我有以下几行代码:
- @presentation_rows.each do |presentation_row|
= link_to "Delete", presentation_row, method: :delete
Run Code Online (Sandbox Code Playgroud)
我在destroy控制器动作中尝试了很多方法,但它们都指向了一个显而易见的事实,即我试图破坏嵌入式文档而不通过它的父级.但是现在我在我的视图文件中有了它的id的presentation_row,我不应该被允许销毁它.
带有空毁灭动作的错误消息,fyi:
Started DELETE "/en/presentation_rows/516af0a983c336708300000f" for 127.0.0.1 at 2013-04-14 20:08:47 +0200
Processing by PresentationRowsController#destroy as HTML
Parameters: {"authenticity_token"=>"KHGG2dsTseCl88okOKW9JAlHb+VaK2lKIxb0ptAIC7A=", "locale"=>"en", "id"=>"516af0a983c336708300000f"}
MOPED: 127.0.0.1:27017 QUERY database=shop_import_development collection=users selector={"$query"=>{"_id"=>"511a813a83c336a0ea000001"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 fields=nil (0.3152ms)
MOPED: 127.0.0.1:27017 QUERY database=shop_import_development collection=presentations selector={"_id"=>"516af0a983c336708300000f"} flags=[:slave_ok] …Run Code Online (Sandbox Code Playgroud) 我有不同的哈希包含单位,分组为单位类型.我的代码旨在确定应返回哪个单元类型以进行进一步处理.但是,在检查每个列表时会发生很多重复.第一个if与第一个elsif完全相同.如何以最佳方式干燥代码?
from_unit = "gr"
to_unit = "kg"
WEIGHT = {
"gr" => 1000.0,
"kg" => 1.0,
}
MEASURE = {
"mm" => 1000.0,
"cm" => 100.0,
"m" => 1.0
}
if WEIGHT.has_key?(from_unit) or WEIGHT.has_key?(to_unit)
if WEIGHT.has_key?(from_unit) && WEIGHT.has_key?(to_unit)
return WEIGHT
elsif WEIGHT.has_key?(from_unit)
raise RuntimeError, "#{to_unit} is not a known unit"
else
raise RuntimeError, "#{from_unit} is not a known unit"
end
elsif MEASURE.has_key?(from_unit) or MEASURE.has_key?(to_unit)
if MEASURE.has_key?(from_unit) && MEASURE.has_key?(to_unit)
return WEIGHT
elsif MEASURE.has_key?(from_unit)
raise RuntimeError, "#{to_unit} is not a known unit" …Run Code Online (Sandbox Code Playgroud) 我有sidekiq (2.15.2),devise (3.2.0)并devise-async (0.9.0)在我的Rails应用程序.
我正试图devise-async接管发送电子邮件.但没有运气.我按照这样的说明:
添加:async到User模型:
# models/user.rb
class User
include Mongoid::Document
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :async
end
Run Code Online (Sandbox Code Playgroud)
创建初始化程序:
# config/initializers/devise_async.rb
Devise::Async.backend = :sidekiq
Run Code Online (Sandbox Code Playgroud)
我没有在邮件中进行任何自定义修改
# config/initializers/devise_async.rb
Devise.setup do |config|
config.mailer_sender = "my@email.com"
# config.mailer = "Devise::Mailer"
end
Run Code Online (Sandbox Code Playgroud)
以下是创建新帐户时在控制台中显示的内容:
Started POST "/da/users" for 127.0.0.1 at 2014-05-29 14:42:07 +0200
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"wyIIRqVoYrXqbX/U+3PGyrYI/MIxcH1YErUQ7JWcfUs=", "user"=>{"company"=>"Some Company Ltd.", "email"=>"some@email.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, …Run Code Online (Sandbox Code Playgroud) 我正在使用bootstrap-wysihtml5,因此从textarea输入字段接收输入.为了改善用户体验,我想自动调整textarea以适应输入文本.
在这个Gist中的代码的帮助下,我可以在单击时调整textarea的大小,但不能在加载时调整大小.
这是我目前的实施:
var container = $("#container");
var textarea = $("<textarea />");
textarea.attr("style", "width: 90%;");
container.append(textarea);
textarea.wysihtml5({
"font-styles": false,
"emphasis": false,
"lists": false,
"html": false,
"link": false,
"image": false,
"color": false
});
textarea.val("<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div<div><br></div><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur..</div");
textarea.observe("load", function () {
var $iframe = $(this.composer.iframe);
var $body …Run Code Online (Sandbox Code Playgroud) 在Ruby中,我可以创建一个16字节的二进制文件并将其转换为十六进制字符串:
key = SecureRandom.random_bytes(16) # => "hN\xDB\xAD\xAF\xB3R\xC0`\xB19\x1D\x19.\xD3I"
hex_key = key.each_byte.map { |byte| '%02x' % byte }.join # => "684edbadafb352c060b1391d192ed349"
Run Code Online (Sandbox Code Playgroud)
在PHP和Javascript中,我可以将十六进制字符串转换回它的16字节二进制文件。
PHP:
<?php
hex2bin("684edbadafb352c060b1391d192ed349");
?>
Run Code Online (Sandbox Code Playgroud)
通过CryptoJS的 Javascript :
CryptoJS.enc.Hex.parse("684edbadafb352c060b1391d192ed349");
Run Code Online (Sandbox Code Playgroud)
但是,如何使用Ruby将十六进制字符串转换回16字节二进制文件呢?
我有两个Mongoid文档,FirstType文档和SecondType文档数组.两者都嵌入了User.
user.first_types = [#<FirstType _id: 51a10b4883c336ebef0002a8, created_at: 2013-05-25 19:04:40 UTC, updated_at: 2013-05-25 19:04:40 UTC, datetime: 2013-03-28 15:03:22 UTC, text: "Hello 1">]
user.second_types = [#<SecondType _id: 51a6058783c3368a62000003, created_at: 2013-05-29 13:41:27 UTC, updated_at: 2013-05-29 13:41:27 UTC, datetime: 2013-05-29 08:23:27 UTC, text: "Hello 2">]
Run Code Online (Sandbox Code Playgroud)
然后我将它们与这行代码合并:
all_types = user.first_types+user.second_types
Run Code Online (Sandbox Code Playgroud)
我现在希望按属性排序all_types数组datetime(最新的datetime,所以SecondType对象应该是第一个).
我已经尝试过传统的Mongoid和Ruby数组方法,但是当我混合使用Mongoid文档时它们似乎不起作用.有任何想法吗?
ruby ×3
mongoid ×2
arrays ×1
autoresize ×1
binary ×1
devise ×1
devise-async ×1
encryption ×1
hash ×1
hex ×1
javascript ×1
jquery ×1
mongodb ×1
redis ×1
sidekiq ×1
sorting ×1
wysihtml5 ×1