我想创建一个MissingImage这样的类:
class MissingImage
include ActionView::Helpers::AssetUrlHelper
def src format
return asset_path('layout/missing_image.png')
end
end
Run Code Online (Sandbox Code Playgroud)
要在模型中使用这样的:
def main_image
images.find(&:ismain) || images.first || MissingImage.new
end
Run Code Online (Sandbox Code Playgroud)
问题是 - asset_path当像这样使用时,只返回字符串而不与资产管道建立任何连接.
建议?
UPDATE
在搞砸之后我MissingImage有点重构,但它仍然没有在生产中生成签名的资产路径:
class MissingImage
def src format
return ActionController::Base.helpers.asset_path('layout/missing_image.png')
end
end
Run Code Online (Sandbox Code Playgroud)
返回的路径是 /assets/layout/missing_image.png
给定以下控制器结构:
# application_controller.rb
class ApplicationController < ActiveController::Base; end
# pages_controller.rb
class PagesController < ApplicationController; end
# admin/application_controller.rb
module Admin
class ApplicationController < ::ApplicationController; end
end
# admin/pages_controller.rb
module Admin
class PagesController < ApplicationController; end
end
Run Code Online (Sandbox Code Playgroud)
人们会期望Admin::PagesController继承Admin::ApplicationController而且确实如此.但我注意到它有时会继承自::ApplicationController.
因此,我决定不冒险,并将所有控制器的声明更改/admin为特定目标Admin::ApplicationController
# admin/pages_controller.rb
module Admin
class PagesController < Admin::ApplicationController; end
end
Run Code Online (Sandbox Code Playgroud)
好的,但是从我知道它首先是正确的.为什么Rails有时会从错误的控制器继承?
Admin::PagesController 有时继承ApplicationController而不是Admin::ApplicationController尽管两者都是相同的module Admin
有办法解决吗?这让我很疯狂,在你按CMD- /评论代码然后它添加破坏SASS的HAML注释(一个斜线而不是两个)之前,这并不重要.
所以我每次都必须手动将语言改为SASS.
在 Active Admin 中,侧边栏占用了太多空间,这会干扰数据密集表。
有没有一种简单的方法可以将它移动到桌子的顶部?
我使用宝石globalize和globalize_accessors翻译我的模型.这是一个例子:
# model.rb
class Model < ActiveRecord::Base
translates :title, :description
globalize_accessors
end
Run Code Online (Sandbox Code Playgroud)
我希望能够检索字段列表,即[:title, :description]在表单中循环它们.
我已经四处寻找,我唯一能找到的就是#globalize_attribute_names方法.但是,它返回一个翻译字段列表,其中的语言环境按原始标题排序:
[:title_en, :title_es, :title_xx, :description_en, ... ]
Run Code Online (Sandbox Code Playgroud)
所以,问题是 - 有没有办法获得我指定的字段列表translates?
我有点像这样修理它,但它不是很好:
def translates
globalize_attribute_names.map do |name|
name[/(\w+)_\w{2}\z/]
Regexp.last_match[1]
end.uniq
end
Run Code Online (Sandbox Code Playgroud) 查看其他人的代码后,我注意到以下几点:
login_as user, scope: :user
Run Code Online (Sandbox Code Playgroud)
我一直简单地使用
login_as user
Run Code Online (Sandbox Code Playgroud)
所以我出去寻找解释并找到了这篇文章如何:用 Capybara 进行测试,上面写着使用scope: :user但是没有任何解释。没有它,我所有的测试都可以正常工作。
另一个奇怪的事情是Warden.test_mode!我也没有使用。我为什么需要它?
有什么解释吗?
Guard 这个问题一直让我讨厌:
.../gems/bundler-1.6.2/lib/bundler/runtime.rb:34:in `block in setup': You have already activated multi_json 1.10.0, but your Gemfile requires multi_json 1.9.2. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
Run Code Online (Sandbox Code Playgroud)
我知道我可以做bundle update或者gem uninstall指定确切的版本Gemfile.
有没有办法一劳永逸地解决这个问题?所以警卫发射bundle exec rspec或bin/rspec(我正在使用rbenv)?我想我在github的某个地方看到了一个补丁,但我现在找不到它.
更新
只是为了记录在这里即使发生了什么bundle exec:
$ bundle exec guard
17:11:07 - INFO - Guard is using TerminalNotifier to send notifications.
17:11:07 - INFO - Guard is using TerminalTitle to send notifications.
17:11:07 - INFO …Run Code Online (Sandbox Code Playgroud) 当我通过添加一行O或o根据它周围的缩进添加.
使用A或有没有办法做同样的事情I?
class
def method
? | cursor starts in the first column
end
end
Run Code Online (Sandbox Code Playgroud)
...*clickety-click*...
class
def method
? | cursor is correctly positioned inside the method
end
end
Run Code Online (Sandbox Code Playgroud)
O而o做到这一点的开箱但后来我在该行更高/更低的启动.
有没有办法Cmd在终端中使用Vim键?MacVim做的事情.
我已经重新映射Cmd+S到iTerm2发送Esc:w!<CR>以保存Vim中的文件,但这听起来有点弱.
有了iTerm和Vim的所有功能,应该有一些方法可以做到这一点吗?
有没有办法像在 jQuery 中那样将有效负载添加到 vanilla JavaScript 事件?
// jQuery
$(document).trigger('event', payload);
// Vanilla JS
window.dispatchEvent(new Event('event', ???
Run Code Online (Sandbox Code Playgroud)
我想我必须使用我自己的某种事件总线?
什么是重新映射的最佳方法w/ W停在中间sub_words和subWords?
我安装了一些文本对象,但我映射w到vav<esc>(选择下一个子词并取消选择)并没有让我到任何地方.
救命.
vim ×3
ruby ×2
activeadmin ×1
capybara ×1
devise ×1
globalize ×1
guard ×1
haml ×1
inheritance ×1
iterm2 ×1
javascript ×1
jquery ×1
macos ×1
rbenv ×1
rspec ×1
sass ×1
sublimetext ×1
sublimetext3 ×1
terminal ×1
vim-plugin ×1
warden ×1