小编Pie*_*rre的帖子

Rails - CSV导出:提示文件下载

我想让我的用户能够将表导出为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.

csv ruby-on-rails

14
推荐指数
1
解决办法
1万
查看次数

如何让Twitter Bootstrap模态动画更快?

我非常喜欢Twitter Bootstrap模式,但用动画显示它有点慢.我说约500ms.

有没有办法让它更快?我看了看bootstrap-modal.js但找不到任何有用的东西.

并且,我不想完全停用动画,因为我发现这是一个很好的技巧,使用户眼中的响应时间看起来更快; o)

twitter-bootstrap twitter-bootstrap-rails

13
推荐指数
1
解决办法
2万
查看次数

Rails PDFKit命令失败

我正在尝试使用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

pdf-generation ruby-on-rails pdfkit wkhtmltopdf

10
推荐指数
2
解决办法
5106
查看次数

PostgreSQL中的条件求和

我有一个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......

postgresql ruby-on-rails-3

9
推荐指数
1
解决办法
3629
查看次数

无法在Snow Leopard上安装乘客3(使用RVM和ruby 1.9.2)

我一直试图安装乘客但还没有成功.

我安装了宝石,但是当我跑的时候

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

ruby-on-rails passenger osx-snow-leopard rvm

7
推荐指数
2
解决办法
2250
查看次数

如何使用simple_form显示用户列表?

当我这样做: <%= f.association :user, :collection => User.where(:country_id => 1) %>

我的下拉列表中填充了以下行: #<User:0x0000010b98d170>

相反,我想显示一封与用户ID相关联的电子邮件.

我还没有找到在使用关联时如何覆盖simple_form的值/内容默认值.

有人可以帮忙吗?

谢谢你,P.

forms ruby-on-rails

5
推荐指数
1
解决办法
6173
查看次数

捆绑安装一塌糊涂

我在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文件夹)?

谢谢!页.

install rubygems ruby-on-rails bundler

5
推荐指数
1
解决办法
398
查看次数

将额外数据添加到simple_form输入

我正在使用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都不是.

如何将这些额外的数据传递给我的输入?

ruby-on-rails-3 simple-form

5
推荐指数
1
解决办法
5063
查看次数

rails:如何基于子域覆盖覆盖区域设置?

我已经使用标准rails机制对应用程序进行了国际化和本地化。一切都存储在en,fr,de.yml文件中。

我的应用程序是基于子域的多租户。

我想允许我的用户覆盖应用程序中的某些翻译(例如,将“ Employee”更改为“ Associate”,因为它与他们自己的术语相匹配)。

我曾尝试根据每个请求更改yml文件的加载路径,但无济于事。

知道如何针对每个请求先在用户特定的yaml文件中查找,然后在未覆盖翻译的情况下回到默认的yaml文件吗?

ruby-on-rails internationalization ruby-on-rails-3 rails-i18n

4
推荐指数
1
解决办法
968
查看次数

我可以在新窗口中重定向吗?

我有一个用户可以点击的链接列表.点击后,我想增加一个计数器(跟踪点击该链接的用户数量),然后在新窗口中打开该链接.

现在,在'show'方法中,我可以做除了"新窗口"之外的所有事情.有没有办法在纯轨道中实现这一点,或者我是否需要添加一些额外的javascript来启动ajax请求(用于增量)然后在新窗口中打开链接?

谢谢,皮埃尔

ruby-on-rails

3
推荐指数
1
解决办法
2502
查看次数

在Heroku上缓存了named_scope?

我有一个名称范围,它将查询结果作为参数:

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.

ruby-on-rails heroku

2
推荐指数
1
解决办法
391
查看次数

注射结果为零

我试图积累一些值,如果它们符合条件.为什么这个片段返回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正确的方法吗?

ruby

1
推荐指数
1
解决办法
767
查看次数