出于某种原因,当我运行我的应用程序时,我得到了"ActionController :: Base:Class"的"未定义的方法`page_cache_extension"错误.
奇怪的是,它似乎只是在我启动机器并启动服务器后的第一次启动时发生的.如果我刷新页面 - 它加载正常.如果我重新启动我的服务器 - 它也可以正常工作.
我在windows7上使用rails 3.0.9和ruby 1.9.2并且我认为它在我升级到3.0.7后开始发生.至少,3.0.3我没有得到这个.
这是跟踪:
[2011-06-28 15:16:39] INFO WEBrick 1.3.1
[2011-06-28 15:16:39] INFO ruby 1.9.2 (2011-02-18) [i386-mingw32]
[2011-06-28 15:16:39] INFO WEBrick::HTTPServer#start: pid=5292 port=3000
[2011-06-28 15:27:18] ERROR NoMethodError: undefined method `page_cache_extension' for ActionController::Base:Class
D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/static.rb:21:in `call'
D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:168:in `call'
D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing'
D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/rack/log_tailer.rb:14:in `call'
D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/content_length.rb:13:in `call'
D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/handler/webrick.rb:52:in `service'
D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
D:/dev/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
Started GET "/" for 127.0.0.1 at 2011-06-28 15:27:21 +0400
Processing by GamesController#index as HTML
Category Load (2.0ms) SELECT "categories".* FROM "categories" …
Run Code Online (Sandbox Code Playgroud) 我正在开发一款Rail3应用程序.经过几个小时的努力,最后在win7x64/ruby 1.9.2上安装了rmagick 2.13.1 gem而没有错误,我遇到了另一个错误.是的,我听说过在windows中使用rails可能会很痛苦......
我使用carrierwave处理图像并将其上传到AWS S3.处理看起来像
class IconUploader < CarrierWave::Uploader::Base
require 'rmagick'
include CarrierWave::RMagick
...
process :resize_to_fit => [100, 100]
process :convert => :png
...
Run Code Online (Sandbox Code Playgroud)
当我在我的开发机器上触发文件上传时,它会抛出一个Windows弹出窗口,说
找不到CORE_RL_magick_.dll
谷歌对此并不是很有帮助.
我将PATH变量设置为C:/ ruby192/ImageMagick - 我已经安装了ImageMagick.这个文件夹有几个CORE_RL dll,包括magick.DLL本身不会丢失!
irb > require 'rmagick'
返回true并convert -version
输出:
Version: ImageMagick 6.6.9-6 2011-04-14 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP
Run Code Online (Sandbox Code Playgroud)
所以我有几个问题.
elseif
我没有,是否还有Windows和heroku都支持的其他宝石和/或图形库?else
也许有一种方法可以配置carrierwave,而不是在开发环境中处理图像到目前为止,我已经尝试了ImageMagick v 6.6.9 32bit dll,它给出了CORE_RL dll错误,64位静态,没有用于编译rmagick gem的dev头,以及64位动态,这给了我很多undefined reference
错误.宝石编译,每个测试,除了第一个:
checking for snprintf() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... …
Run Code Online (Sandbox Code Playgroud) 这是我将旧文件发送到浏览器的旧代码:
def show
send_file File.join(Rails.root, 'tmp', 'price.xls')
end
Run Code Online (Sandbox Code Playgroud)
但是最近我发现tmp文件夹不能用作Heroku上的持久存储,所以我决定将文件移动到AWS S3.
这就是我到目前为止所得到的:
def show
uploader = PriceUploader.new
uploader.retrieve_from_store!('price.xls')
end
Run Code Online (Sandbox Code Playgroud)
现在,如何将文件发送到浏览器?
UPD
我当然没有安装上传器
我正在尝试在rails 3.0.10项目上实现"联系我们"表单.在RailsGuides之后,我创建了一个邮件程序.
class QuestionMailer < ActionMailer::Base
default :to => "%mail@mydomain" #gmail for domains
def ask(message)
@content = message.content
unless message.name.nil? or message.name.empty?
from = "#{message.name} <#{message.email}>"
else
from = message.email
end
mail(:subject => message.subject, :from => from)
end
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有这些线:
if @question.valid?
QuestionMailer.ask(@question).deliver
redirect_to root_url, :notice => "????????? ??????????"
else
Run Code Online (Sandbox Code Playgroud)
Production.rb:
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => '%mydomain%' }
ActionMailer::Base.smtp_settings = {
:address => "smtp.sendgrid.net",
:port => "25",
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain …
Run Code Online (Sandbox Code Playgroud) 我有一个很短的问题.是否可以使用以下内容初始化哈希:
row = {
:title => "row title",
:slug => row[:title].paremeterize
}
Run Code Online (Sandbox Code Playgroud)
换句话说,我可以以某种方式引用自身内部的单元化哈希,或者我必须这样做:
row = {
:title => "row title"
}
row[:slug] = row[:title].paremeterize
Run Code Online (Sandbox Code Playgroud)
感谢您的评论.当然,这段代码不起作用.我问是否有类似的方法,可能有不同的语法.Ruby对我来说充满了惊喜:)
我想知道Rails3是否有一个简单的方法从输入数据中删除html标签,然后将其保存在数据库中.
现在,HAML在视图级别对数据进行了清理.JS没有得到执行和东西,但我想完全删除可能有害的数据.
基本上,我的问题是:是否有一个帮助我可以在before_save过滤器中使用来安全地剥离标签?
我刚刚安装了Paperclip并尝试将图标附加到我的模型上.
has_attached_file :icon,
:styles => { :normal => "100x100>", :format => 'png' },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:url => "/icon/:slug.:extension"
:path => "icon/:slug.:extension"
Run Code Online (Sandbox Code Playgroud)
s3.yml包含我的桶名和两个键.
slug interpolation在config/initializers/paperclip.rb中定义为
Paperclip.interpolates('slug') do |attachment, style|
attachment.instance.cached_slug
end
Run Code Online (Sandbox Code Playgroud)
当我调用game.icon.url时,我收到此错误:
undefined method `icon_file_name' for #<Game:0x4000f50>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我在Windows 7 x64上运行rails 3.0.4和ruby 1.9.2,如果它有任何区别的话.
这是我的表格:
= simple_form_for [@post, @comment] do |f|
= f.input :text, :label => false
= f.button :submit
Run Code Online (Sandbox Code Playgroud)
注释嵌套在帖子资源中.评论验证:validates :text, :length => { :minimum => 5 }
评论控制器:
def create
@post = Post.find params[:game_id]
comment = @post.comments.build :user_id => current_user, :text => params[:comment][:text]
comment.save
redirect_to @post
end
Run Code Online (Sandbox Code Playgroud)
表单本身工作正常.如果我输入超过5个字符,则会创建注释.但如果它更少,我只是被重定向到posts#show
并且表单中没有验证错误(我已经检查了源代码).
我也尝试填写设计注册表,如果失败,我可以看到错误.
我猜问题是由重定向引起的.但无论如何,我不知道如何解决它.
ruby ×2
actionmailer ×1
amazon-s3 ×1
attachment ×1
carrierwave ×1
heroku ×1
imagemagick ×1
paperclip ×1
rmagick ×1
ruby-1.9 ×1
ruby-1.9.2 ×1
sendgrid ×1
simple-form ×1
windows ×1