试图将变量传递给部分而没有成功.
尝试1:传递模板上下文
"产品"模板:
From template: {{product.name}}
<br>
{{> product_buttons}}
Run Code Online (Sandbox Code Playgroud)
"product_buttons"部分:
From partial: {{product.name}}
Run Code Online (Sandbox Code Playgroud)
输出:
From template: Awesome Steel Shoes
<br>
[object Object]
From partial:
Run Code Online (Sandbox Code Playgroud)
我们可以看到2个问题:
{{> product_buttons this}
和{{> product_buttons product=product}
完全相同的结果渲染模板[object Object]
插入输出中尝试2:传递哈希变量
"产品"模板:
From template: {{product.name}}
<br>
{{> product_buttons thename=product.name}}
Run Code Online (Sandbox Code Playgroud)
"product_buttons"部分:
From partial: {{thename}}
Run Code Online (Sandbox Code Playgroud)
这会Uncaught TypeError: Cannot read property 'thename' of undefined
从编译的部分中引发以下行的错误:
return "From partial: "
+ this.escapeExpression(((helper = (helper = helpers.thename || (depth0 != null ? depth0.thename : depth0)) …
Run Code Online (Sandbox Code Playgroud) 在一个code
字符串中我存储了一段代码,可以是CSS,SASS,SCSS,JavaScript或CoffeeScript.内容来自用户,我需要在保存到数据库之前验证语法.
我需要检查语法是否正确.目前,我正在使用一个有效的丑陋黑客.你有更好的解决方案吗?
def check_js
if language == 'coffee' # CoffeeScript
CoffeeScript.compile code
else # JavaScript
Uglifier.compile code
end
rescue ExecJS::RuntimeError => e
errors.add :code, e.message
end
def check_css
if language == 'css' # CSS
Sass::CSS.new(code).render
else # SASS, SCSS
Sass.compile code, syntax: language.to_sym
end
rescue Sass::SyntaxError => e
errors.add :code, e.message
end
Run Code Online (Sandbox Code Playgroud) 因此,我决定向url
ActiveStorage :: Attachment对象添加attr_accessor。
在开发中,该补丁会保留一段时间,直到看起来“已丢失”为止。这意味着它可以工作几分钟,然后不再工作。然后,我需要重新启动服务器才能再次应用补丁。我认为我没有正确打补丁,因此我需要在该方面提供建议。
这是我尝试过的:
lib / ext / active_storage / attachment.rb
第一次尝试 :
module ActiveStorageUrl
extend ActiveSupport::Concern
included do
attr_accessor :url
end
end
ActiveStorage::Attachment.send :include, ActiveStorageUrl
Run Code Online (Sandbox Code Playgroud)
第二次尝试
class ActiveStorage::Attachment < ActiveRecord::Base
attr_accessor :url
end
Run Code Online (Sandbox Code Playgroud)
顺便提一下,在这两种情况下,它都装有:
config / initializers / monkey_patches.rb
require 'ext/active_storage/attachment'
Run Code Online (Sandbox Code Playgroud)
So when it work I have no error message, but after a while the patch "diseapear" (lacking better terms), and I get the following error, telling me my attr_accessor is not there anymore. …
ruby monkeypatching ruby-on-rails ruby-on-rails-5 rails-activestorage
我需要运行thin start
或thin -ssl ... start
我的Rails应用程序的根目录中,看到输出应用程序日志到控制台,类似什么rails s
呢
运行功能Rspecs时,我收到以下错误(此消息底部的完整跟踪)
Rack app error handling request { GET /rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSm5kbUZ5YVdGdWRITXZSM0IxTkRGRFRWQlFaVXRNYVUxaVpuQjZXVmw1UTNBMUx6RXhNR1V3TVRka01UWTVNalZrWXpkak5UQTNNamhqT1dNeE5UUmhOREl3TURjNVlXRTJaVFZtWTJNME16VmtZak5sTm1VNU4ySXhNemd3WldObFl6Z0dPZ1pGVkRvUVpHbHpjRzl6YVhScGIyNUpJajFwYm14cGJtVTdJR1pwYkdWdVlXMWxQU0pwYldGblpTNXdibWNpT3lCbWFXeGxibUZ0WlNvOVZWUkdMVGduSjJsdFlXZGxMbkJ1WndZN0JsUTZFV052Ym5SbGJuUmZkSGx3WlVraURtbHRZV2RsTDNCdVp3WTdCbFE9IiwiZXhwIjoiMjAxOS0wMS0yNVQxMToxNjoyOS40NDBaIiwicHVyIjoiYmxvYl9rZXkifX0=--db9451afdc95b292aa6a77c40e00ab0ceb687766/image.png }
#<Errno::ENOENT: No such file or directory @ rb_file_s_mtime - /path/to/rails/app/tmp/storage/va/ri/variants/Gpu41CMPPeKLiMbfpzYYyCp5/110e017d16925dc7c50728c9c154a420079aa6e5fcc435db3e6e97b1380ecec8>
(followed by the full trace at the end of this message)
Run Code Online (Sandbox Code Playgroud)
Failure/Error: last_modified = ::File.mtime(path).httpdate
Errno::ENOENT:
No such file or directory @ rb_file_s_mtime - /path/to/rails/app/tmp/storage/va/ri/variants/Gpu41CMPPeKLiMbfpzYYyCp5/110e017d16925dc7c50728c9c154a420079aa6e5fcc435db3e6e97b1380ecec8
(followed by the full trace at the end of this message)
Run Code Online (Sandbox Code Playgroud)
product.image
是一个ActiveStorage附件.在测试期间,"products/_form"部分被渲染并显示附件文件(即png图像),其代码如下:= image_tag url_for(product.image.variant(resize: "120x120"))
.如果我注释掉这一行,则不再出现错误.
测试本身每次都会成功,测试后似乎会触发错误.我验证了所有的after
块,它似乎发生在我所有的后块之后.
跟踪表明ActiveStorage::DiskController.serve_file
触发了错误.是不是ActiveStorage应用程序没有正常关闭?
我正在使用active_storage.service = :test
配置,但:file
给出了相同的错误. …
我正在使用jquery-file-upload,并且在destroy操作完成后尝试从服务器接收数据没有成功
我可以看到firebug服务器正确响应了我在破坏操作完成后我预期的json数据(我使用rails作为后端),但在jquery方面我没有成功获取响应数据.我尝试了jquery-file-upload提供的不同回调,但没有成功
有什么提示吗?:)
为了澄清,我试图做这样的事情:
$('#fileupload').bind('fileuploaddestroyed', function(e, data) {
console.log(data.response.my_value);
});
Run Code Online (Sandbox Code Playgroud) 这个问题是关于从rspec环境启动外部项目的rails服务器.
有2个项目.
我正在尝试测试这两个rails项目之间的API交互,我想设置rspec,这样我就可以在BackOffice项目中编写和维护我的spec文件.这些规范将启动ApiServer rails服务器,然后播放以执行测试.
我的问题是关于启动ApiServer rails服务器.在查看rails app初始化文件后,我假设我必须向"config/environment"添加一个require.
但是当我插入BackOffice/spec/spec_helper.rb时
require File.expand_path('../../../ApiServer/config/environment', __FILE__)
Run Code Online (Sandbox Code Playgroud)
我收到了错误
`initialize!': Application has been already initialized. (RuntimeError)
# Backtrace to the file:
# ApiServer/config/environment.rb
# Line:
# Rails.application.initialize!
Run Code Online (Sandbox Code Playgroud)
我还尝试在反引号中简单地调用以下内容
`cd /api/path; bundle exec rails s -p 3002`
Run Code Online (Sandbox Code Playgroud)
但得到了同样的错误
然后我从Capybara源代码中获得灵感,并且需要"ApiServer/application",然后我能够创建一个ApiServer.new
对象,但是一旦我调用initialize!
它就会得到相同的消息.
任何帮助是极大的赞赏.干杯
我正在努力保持我的spec文件尽可能干净.使用'shoulda'宝石并编写遵循相同模式的自定义匹配器.
我的问题是创建一个自定义匹配器,它将包装expect{ post :create ... }.to change(Model, :count).by(1)
并可以与其他'shoulda'匹配器在相同的示例组中使用.详情如下:
自定义匹配器(简化)
RSpec::Matchers.define :create_a_new do |model|
match do |dummy|
::RSpec::Expectations::ExpectationTarget.new(subject).to change(model, :count).by(1)
end
end
Run Code Online (Sandbox Code Playgroud)
工作实例
describe 'POST create:' do
describe '(valid params)' do
subject { -> { post :create, model: agency_attributes } }
it { should create_a_new(Agency) }
end
end
Run Code Online (Sandbox Code Playgroud)
只要我使用subject
lambda并且我的匹配器是示例组中唯一的匹配器,这项工作就可以了.
失败的例子
失败的例子1
在同一组中添加更多示例会使另一个匹配器失败,因为subject
现在是lambda而不是Controller的实例.
describe 'POST create:' do
describe '(valid params)' do
subject { -> { post :create, model: agency_attributes } }
it { should create_a_new(Agency) } …
Run Code Online (Sandbox Code Playgroud) 我只是从cancan迁移到pundit,我很喜欢cancan语法来检查授权:can? :show, @user
.使用专家,编写相同的验证policy(@user).show?
.我觉得它不太可读.所以我正在写一个2小包装器:
def can?(model, action)
policy(model).send(action)
end
def cannot?(model, action)
! can?(model, action)
end
Run Code Online (Sandbox Code Playgroud)
我的问题是:在Rails 4中,2个包装器的最佳位置是什么,知道我在控制器和视图中使用它们.还没有在模型中,但后来可能会成为现实,所以说:到处都是.
任何指针都赞赏,谢谢