小编Joe*_*der的帖子

rails 3中的部分表单需要不同的链接,具体取决于New或Edit

我有一个由Rails 3脚手架生成的基本视图设置.它给了我一个局部视图_form.html.erb.我的edit.html.erb和我的new.html.erb都渲染了这个局部视图.

在局部视图中,我希望有一个link_to转到不同的路径,具体取决于它是由视图还是编辑视图呈现.

是否有捷径可寻?

我的代码目前看起来像这样,但不允许不同的路径.

<%= f.submit %> or <%= link_to 'Go back', models_path %>
Run Code Online (Sandbox Code Playgroud)

如果它有帮助,我试图将它们发送回他们来自的页面(它们来自不同的地方以进行添加和编辑)

ruby-on-rails link-to ruby-on-rails-3

9
推荐指数
2
解决办法
7471
查看次数

Ruby on Rails - 在accepts_nested_attributes_for上进行before_save计算

我有一个发票模型,"有很多"发票项目.我有一个表单,允许您创建/编辑发票,此表单接受发票项目的嵌套属性.

在我的发票模型中,有一个"total_amount"字段,它是一个计算字段(发票项目中"金额"的总和).

我想在创建或更新发票时计算此金额.我试图在发票模型的before_save事件中执行此操作.下面的代码几乎可以工作,但是保存的总数总是落后一步.即如果我的发票总额为20美元,我编辑此发票并将发票项目更改为总计15美元,然后保存我的发票,总数不会更改.如果我打开相同的发票,然后再次保存,则总计会正确更新.

我假设下面计算总和的行是访问已经保存在数据库中的行项目,而不是那些刚刚更改过并且即将保存的行项目.但我不知道如何访问它们.

class Invoice < ActiveRecord::Base
  has_many :invoice_items, :dependent => :destroy

  accepts_nested_attributes_for :invoice_items, :allow_destroy => true 

  before_save :record_total_amount

  private
    def record_total_amount
      self.total_amount = self.invoice_items.sum('amount')
    end
end
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

ruby-on-rails nested-attributes calculated-field

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

使用Carrierwave加密/解密文件并存储在S3(Rails)中

我需要能够在将文件存储在S3上之前加密文件,然后在访问它们时对其进行解密.文件将是图像,文档,PDF等.

我正在使用Carrierwave来处理文件上传和存储(这是使用Ruby on Rails).我将它们存储在Amazon S3中.

有没有人这样做,或有任何想法如何实现这一目标?

谢谢.

encryption ruby-on-rails amazon-s3 carrierwave

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

文件名中的特殊字符影响aws-sdk ruby​​ gem url_for方法

我正在使用官方的AWS ruby​​ gem for S3,我在使用"url_for"方法时遇到问题,因为它们中包含特殊字符的文件(即逗号,撇号).我正在使用最新的aws-sdk gem用于ruby,我的代码如下所示:

s3 = AWS::S3::new
bucket = s3.buckets[bucket]
object = bucket.objects[object_address]
object_url = object.url_for(:read, :expires => 60*60, :secure => true)
Run Code Online (Sandbox Code Playgroud)

正确找到该对象,但是我从url_for获取的URL给出了HTTPError:404 Not Found错误.如果文件名中没有逗号或撇号,它可以正常工作.

有没有办法处理这个,而不需要首先限制文件名?

ruby ruby-on-rails amazon-s3 ruby-on-rails-3

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