Heroku上的Rails 4有一个奇怪的问题.编译图像时,它们会添加哈希值,但CSS中对这些文件的引用没有调整正确的名称.这就是我的意思.我有一个名为logo.png的文件.然而,当它出现在heroku上时,它被视为:
/assets/logo-200a00a193ed5e297bb09ddd96afb953.png
Run Code Online (Sandbox Code Playgroud)
然而,CSS仍然指出:
background-image:url("./logo.png");
Run Code Online (Sandbox Code Playgroud)
结果:图像不显示.有人碰到这个吗?怎么解决这个问题?
当我遇到一些真实性令牌问题时,我正在研究一个新的Rails 4应用程序(在Ruby 2.0.0-p0上).
在编写响应json的控制器时(使用respond_to类方法),当我尝试使用创建记录时,我create开始ActionController::InvalidAuthenticityToken尝试异常curl.
我确定我设置-H "Content-Type: application/json"并设置数据,-d "<my data here>"但仍然没有运气.
我尝试使用Rails 3.2(在Ruby 1.9.3上)编写相同的控制器,并且我没有任何真实性令牌问题.我四处搜索,看到Rails 4中的真实性令牌发生了一些变化.据我所知,它们不再自动插入表格了?我想这会以某种方式影响非HTML内容类型.
有没有办法解决这个问题,而无需请求HTML表单,抢夺真实性令牌,然后使用该令牌发出另一个请求?还是我完全错过了一些非常明显的东西?
编辑:我刚尝试使用脚手架在新的Rails 4应用程序中创建一个新记录而不改变任何东西,我遇到了同样的问题所以我想这不是我做的事情.
我从头开始创建了一个rails应用程序(rails 4.1),我遇到了一个我无法解决的奇怪问题.
每次我尝试在Heroku上部署我的应用程序时,都会收到错误500:
缺少
secret_key_base"生产"环境,请设置此值config/secrets.yml
secret.yml文件包含以下配置:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)
在Heroku上,我已经使用"rake secret"命令的结果配置了一个环境变量"SECRET_KEY_BASE".如果我启动"heroku config",我可以看到具有正确名称和值的变量.
为什么我仍然会收到此错误?
非常感谢
在我的gemfile中我有:
gem 'mysql2'
Run Code Online (Sandbox Code Playgroud)
我的database.yml如下:
default: &default
adapter: mysql2
database: <%= ENV['db_name'] %>
username: <%= ENV['db_user'] %>
password: <%= ENV['db_pass'] %>
host: <%= ENV['db_host'] %>
pool: 32
socket: <%= ENV['socket'] %>
development:
<<: *default
production:
<<: *default
Run Code Online (Sandbox Code Playgroud)
我已经运行了两个bundle update并且bundle install我的Gemfile.lock显示了mysql2.
但是,当我运行时,我rake db:migrate在我的计算机和登台服务器上都得到了这个:
myproject.com(master)$ rake db:migrate
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508".
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038".
rake aborted!
Gem::LoadError: Specified 'mysql2' for database adapter, …Run Code Online (Sandbox Code Playgroud) ruby-on-rails mysql2 ruby-on-rails-4 ruby-on-rails-4.1 ruby-on-rails-4.2
随着Observers正式从Rails 4.0中删除,我很好奇其他开发人员在他们的位置使用了什么.(除了使用提取的宝石.)虽然Observers肯定被滥用并且有时很容易变得笨拙,但是在缓存清除之外有许多用例,它们是有益的.
例如,需要跟踪模型更改的应用程序.观察者可以轻松地观察模型A的变化,并在数据库中记录模型B的变化.如果你想观察几个模型的变化,那么一个观察者就可以处理它.
在Rails 4中,我很好奇其他开发人员使用什么策略代替Observers来重新创建该功能.
就个人而言,我倾向于某种"胖控制器"实现,在每个模型控制器的创建/更新/删除方法中跟踪这些更改.虽然它稍微膨胀了每个控制器的行为,但它确实有助于可读性和理解,因为所有代码都在一个地方.缺点是现在的代码非常相似,分散在几个控制器中.将该代码提取到帮助器方法是一种选择,但您仍然可以调用遍布各处的方法.不是世界末日,也不是"精瘦控制者"的精神.
ActiveRecord回调是另一种可能的选择,虽然我个人并不喜欢,因为在我看来它往往会将两个不同的模型紧密地结合在一起.
所以在Rails 4中,no-Observers世界,如果你必须在创建/更新/销毁另一条记录之后创建一条新记录,你会使用什么样的设计模式?胖控制器,ActiveRecord回调,还是完全不同的东西?
谢谢.
我想知道如何在Rails 4中完成以下操作,或者我是否只使用Rails 3方法来使用lambda,它可以以与4相同的方式传递参数.
我对Rails 3很新,并尝试使用运行Rails 4的一些示例.
这是我的Rails 3代码:
class Person < ActiveRecord::Base
scope :find_lazy, lambda {|id| where(:id => id)}
end
# In console I can call
Person.find_lazy(1)
Run Code Online (Sandbox Code Playgroud)
所以,如果这是Rails 4方式是使用 - > {},那是一个lambda,对吧?scope :all_lazy, -> { select("*") }如果我需要一个论点怎么办?我尝试了一些不同的想法,并在使用 - > {}时在控制台中获得参数错误.
Rails 4文档中的所有强参数示例都使用
params.require(:person).permit(:name, :age)
Run Code Online (Sandbox Code Playgroud)
可能有人请解构和解释什么是与发生require和permit这里?
我正在我的模型观察器中设置一个after_save回调,只有当模型的已发布属性从false更改为true 时才发送通知.既然方法改变了?只有在保存模型之前才有用,我目前(并且未成功)尝试这样做的方式如下:
def before_save(blog)
@og_published = blog.published?
end
def after_save(blog)
if @og_published == false and blog.published? == true
Notification.send(...)
end
end
Run Code Online (Sandbox Code Playgroud)
有没有人对处理这个问题的最佳方法有任何建议,最好使用模型观察者回调(以免污染我的控制器代码)?
model ruby-on-rails callback observer-pattern ruby-on-rails-4
我有一个非常简单的问题.但到目前为止还没有找到解决方案.
所以这是我发送给服务器的JSON字符串:
{
"name" : "abc",
"groundtruth" : {
"type" : "Point",
"coordinates" : [ 2.4, 6 ]
}
}
Run Code Online (Sandbox Code Playgroud)
使用新的许可方法,我得到:
params.require(:measurement).permit(:name, :groundtruth)
Run Code Online (Sandbox Code Playgroud)
这不会引发任何错误,但创建的数据库条目包含null而不是groundtruth值.
如果我只是设置:
params.require(:measurement).permit!
Run Code Online (Sandbox Code Playgroud)
所有东西都按预期保存,但当然,这会破坏强参数提供的安全性.
我找到了解决方案,如何允许数组,但没有找到使用嵌套对象的单个示例.这必须是某种可能的,因为它应该是一个非常常见的用例.那么它是怎样工作的?
ruby-on-rails nested-attributes strong-parameters ruby-on-rails-4
我有一个Bill对象,它有很多Due对象.该Due对象也属于Person.我想要一个可以在一个页面中创建Bill及其子项的表单Dues.我正在尝试使用嵌套属性创建表单,类似于此Railscast中的表单.
相关代码如下:
due.rb
class Due < ActiveRecord::Base
belongs_to :person
belongs_to :bill
end
Run Code Online (Sandbox Code Playgroud)
bill.rb
class Bill < ActiveRecord::Base
has_many :dues, :dependent => :destroy
accepts_nested_attributes_for :dues, :allow_destroy => true
end
Run Code Online (Sandbox Code Playgroud)
bills_controller.rb
# GET /bills/new
def new
@bill = Bill.new
3.times { @bill.dues.build }
end
Run Code Online (Sandbox Code Playgroud)
票据/ _form.html.erb
<%= form_for(@bill) do |f| %>
<div class="field">
<%= f.label :company %><br />
<%= f.text_field :company %>
</div>
<div class="field">
<%= f.label :month …Run Code Online (Sandbox Code Playgroud)