我想让我的用户能够将表导出为CSV.
所以在我的控制器中,我已添加到文件的顶部:
respond_to :html, :js, :csv
Run Code Online (Sandbox Code Playgroud)
如果请求的格式是csv,我也设置标题:
if params[:format] == 'csv'
generate_csv_headers("negotiations-#{Time.now.strftime("%Y%m%d")}")
end
Run Code Online (Sandbox Code Playgroud)
generate_csv_headers(在application_controller中)的代码是:
def generate_csv_headers(filename)
headers.merge!({
'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
'Content-Type' => 'text/csv',
'Content-Disposition' => "attachment; filename=\"#{filename}\"",
'Content-Transfer-Encoding' => 'binary'
})
end
Run Code Online (Sandbox Code Playgroud)
我还创建了一个名为index.csv.erb生成我的文件的视图:
<%- headers = ["Id", "Name"] -%>
<%= CSV.generate_line headers %>
<%- @negotiations.each do |n| -%>
<%- row = [ n.id,
n.name ] -%>
<%= CSV.generate_line row %>
<%- end -%>
Run Code Online (Sandbox Code Playgroud)
我没有任何错误,但它只是显示CSV文件的内容,而我希望浏览器提示下载文件.
我已经阅读了很多,但找不到任何有用的东西.你有好主意吗?
谢谢,p.
我非常喜欢Twitter Bootstrap模式,但用动画显示它有点慢.我说约500ms.
有没有办法让它更快?我看了看bootstrap-modal.js但找不到任何有用的东西.
并且,我不想完全停用动画,因为我发现这是一个很好的技巧,使用户眼中的响应时间看起来更快; o)
我正在尝试使用PDFKit作为rails 3应用程序中的中间件.
我可以从命令行使用wkhtmltopdf就好了,但是我的应用程序一直让我犯这个错误
command failed: "/Users/bobby/.rvm/gems/ruby-1.9.2-p0/bin/wkhtmltopdf" "--page-size" "Letter" "--margin-top" "0.75in" "--margin-right" "0.75in" "--margin-bottom" "0.75in" "--margin-left" "0.75in" "--encoding" "UTF-8" "--print-media-type" "--quiet" "-" "-"
Run Code Online (Sandbox Code Playgroud)
如果我在终端运行它,它等待我的输入,所以我键入一些HTML,然后按Ctrl-d,它吐出似乎是一些PDF ...但没有运气轨道.
这就是我所拥有的:
application.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
require 'pdfkit'
Bundler.require(:default, Rails.env) if defined?(Bundler)
module Mpr
class Application < Rails::Application
YEARS_ARRAY = (2006..2012).map {|y| [y,y]}.unshift(["Year",nil])
MONTHS_ARRAY = (1..12).map{|m| [ Date::MONTHNAMES[m], m]}.unshift(["All months",nil])
config.middleware.use "PDFKit::Middleware", :print_media_type => true
PDFKit.configure do |config|
config.wkhtmltopdf = '/Users/bobby/.rvm/gems/ruby-1.9.2-p0/bin/wkhtmltopdf'
end
end
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器(第一行)
respond_to :html, :pdf
Run Code Online (Sandbox Code Playgroud)
我想我已经浏览了SO,Github和谷歌的所有主题,但没有运气.
任何人都可以帮助或指出我正确的方向吗?
谢谢,P
我有一个transactions表包含category(category_id),amount(amount)和flag(managed)可以是true或false.
我想显示所有类别的列表,其中包含托管和非托管交易的总金额,例如
Category | managed_transactions | unmanaged_transactions
Cat 1 | 124000 | 54000
Cat 2 | 4000 | 0
Cat 3 | 854000 | 1000000
Run Code Online (Sandbox Code Playgroud)
有没有办法做类似的事情
Select category_id,
sum(amount) if (managed is true) as managed_transactions,
sum(amount) if (managed is false) as unmanaged_transactions
from transactions
Run Code Online (Sandbox Code Playgroud)
我显然被困在了if managed is true......
我一直试图安装乘客但还没有成功.
我安装了宝石,但是当我跑的时候
passenger-install-apache2-module
Run Code Online (Sandbox Code Playgroud)
它告诉我
This installer must be able to write to the following directory:
/Users/myname/.rvm/gems/ruby-1.9.2-p0/gems/passenger-3.0.0
But it can't do that, because you're running the installer as myname.
Please re-run this installer as root.
Run Code Online (Sandbox Code Playgroud)
但如果我这样做
sudo passenger-install-apache2-module
Run Code Online (Sandbox Code Playgroud)
我明白了
/Users/myname/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems.rb:762:in `report_activate_error': Could not find RubyGem passenger (>= 0) (Gem::LoadError)
Run Code Online (Sandbox Code Playgroud)
来自/Users/myname/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems.rb:219:in activate'
from /Users/myname/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems.rb:1065:ingem'来自/Users/myname/.rvm/gems/ruby-1.9 .2-p0/bin/passenger-install-apache2-module:18:in''
我试着看看那些文件,但无法理解什么是错的.
你能帮忙吗?
谢谢,P
当我这样做: <%= f.association :user, :collection => User.where(:country_id => 1) %>
我的下拉列表中填充了以下行:
#<User:0x0000010b98d170>
相反,我想显示一封与用户ID相关联的电子邮件.
我还没有找到在使用关联时如何覆盖simple_form的值/内容默认值.
有人可以帮忙吗?
谢谢你,P.
我在mac上使用RVM进行rails 3开发.
我想跑去bundle update newrelic_rpm升级到新版本的gem.
这是一个坏主意:它在我的应用程序的根目录下创建一个新的文件夹调用newrelic_rpm,并且bundle(v 1.0.10)自豪地显示
Your bundle is complete! It was installed into ./newrelic_rpm
而现在我被卡住了,我无法更新我的捆绑包,并且它一直把我所有的宝石都放在新创建的文件夹中.
任何人都可以帮我恢复到初始设置(并摆脱这个./newrelic_rpm文件夹)?
谢谢!页.
我正在使用simple_form gem.
我正在根据集合(我的所有列表actiontypes)呈现输入
<%= f.association :actiontype, collection: Actiontype.all, input_html: { data: {'impacts-pnl' => ??}} %>
Run Code Online (Sandbox Code Playgroud)
我希望能够在输入中添加数据属性来存储额外的数据.
在这种情况下,我想存储impacts_pnl我的属性actiontype.唯一的问题是我不知道如何参考当前actiontype
collection.impacts_pnl 不起作用(显然)
actiontype.impacts_pnl都不是.
如何将这些额外的数据传递给我的输入?
我已经使用标准rails机制对应用程序进行了国际化和本地化。一切都存储在en,fr,de.yml文件中。
我的应用程序是基于子域的多租户。
我想允许我的用户覆盖应用程序中的某些翻译(例如,将“ Employee”更改为“ Associate”,因为它与他们自己的术语相匹配)。
我曾尝试根据每个请求更改yml文件的加载路径,但无济于事。
知道如何针对每个请求先在用户特定的yaml文件中查找,然后在未覆盖翻译的情况下回到默认的yaml文件吗?
ruby-on-rails internationalization ruby-on-rails-3 rails-i18n
我有一个用户可以点击的链接列表.点击后,我想增加一个计数器(跟踪点击该链接的用户数量),然后在新窗口中打开该链接.
现在,在'show'方法中,我可以做除了"新窗口"之外的所有事情.有没有办法在纯轨道中实现这一点,或者我是否需要添加一些额外的javascript来启动ajax请求(用于增量)然后在新窗口中打开链接?
谢谢,皮埃尔
我有一个名称范围,它将查询结果作为参数:
scope :current_budget, where(:budget_review => Appconfig.budget_status)
Run Code Online (Sandbox Code Playgroud)
方法budget_status本身定义为
def self.budget_status
Appconfig.find_by_name('reviewed_budget').value=="1" ? true : false
end
Run Code Online (Sandbox Code Playgroud)
在本地测试时,如果我更改了"Viewed_budget"参数的值,然后再次调用范围,一切正常.
但是在Heroku上,即使我更改了参数,也会给我相同的结果.我试图在Heroku上显示Appconfig.budget_status的值,当我更改设置时它会改变.
仍然,named_scope似乎没有考虑到这一点.
这里有一些缓存技巧吗?如果是这样,我如何摆脱这种特殊情况呢?否则,有没有人知道可能出现什么问题?
谢谢,p.
我试图积累一些值,如果它们符合条件.为什么这个片段返回nil,当我希望它返回2时?
[[1, 2], [2, 3], [3, 8], [4, 2]].inject(0) { |s, e| s + e[1] if e[0] <= 1}
Run Code Online (Sandbox Code Playgroud)
这不是inject正确的方法吗?
bundler ×1
csv ×1
forms ×1
heroku ×1
install ×1
passenger ×1
pdfkit ×1
postgresql ×1
rails-i18n ×1
ruby ×1
rubygems ×1
rvm ×1
simple-form ×1
wkhtmltopdf ×1