我在Rails 3上使用Paperclip(带有Amazon s3).我想删除现有附件而不使用更新操作替换它.
我只发现了这样的一个实例在这里,不能得到那个工作,它只是不会删除,并没有什么在日志中说为什么.我想在表单上做这样的事情:
<%- unless @page.new_record? || !@page.image? -%>
<%= f.check_box :image_delete, :label => 'Delete Image' %>
<%- end -%>
Run Code Online (Sandbox Code Playgroud)
(页面是模型的名称,image是保存附件的属性名称)
但是,如何检测该复选框,更重要的是,如何删除图像?我感谢任何帮助!
我有一些代码,我只想在生产中显示,例如显示disqus注释.这样做的最佳方法是什么?目前我有:
<% if RAILS_ENV.eql?('production') %>
disqus code here
<% end %>
Run Code Online (Sandbox Code Playgroud)
但我不确定这是最好的方法,还是它?看起来非常冗长,我需要在应用程序的几个不同的地方.
我无法使用script/generate.我正在关注基于树的导航教程,该教程说使用script/plugin install git://github.com/rails/acts_as_tree.git或script/generate nifty_layout.
我一直在:
没有这样的文件或目录 - 脚本/插件
我尝试过这些变化:
script/generate nifty_layout
rails generate nifty_layout
ruby script/generate nifty_layout
ruby generate nifty_layout
Run Code Online (Sandbox Code Playgroud)
他们都告诉我:
-bash:script/generate:没有这样的文件或目录
我错过了什么吗?在这里总红宝石nuby,我似乎无法找到答案.
编辑:Mac OS X 10.6上的rails 3
我最近使用Rails实现了Paperclip,并希望尝试使用ImageMagick中的一些滤镜选项,例如模糊.我无法找到任何如何做到这一点的例子.是否通过了:样式作为另一种选择?
:styles => { :medium => "300x300#", :thumb => "100x100#" }
Run Code Online (Sandbox Code Playgroud)
@plang的答案是正确的,但我想给出模糊的确切解决方案,以防万一有人在寻找并发现这个问题:
:convert_options => { :all => "-blur 0x8" }
// -blur {radius}x{sigma}
Run Code Online (Sandbox Code Playgroud)
这改变了这个:

对此:

在内容模型上有一个名为的属性slug.在创建新记录时,我想使用帮助程序来填充此字段,但在现有记录上,我想使用数据库中的值.
目前我有:
<% if @content.new_record? %>
<%= f.text_field :slug, :value => "#{generate_slug(6)}" %>
<% else %>
<%= f.text_field :slug %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但这似乎有点冗长.这是最好的方式,还是别的办法?(Rails newb只是试图在我不确定的问题上找到"Rails方式")
编辑
我应该注意,帮助程序当前位于/app/helpers/application_helper.rb中已移至内容控制器中的私有操作.大卫的回答很有效.
我总是将参数传递给像这样的函数:
setValue('foo','#bar')
function setValue(val,ele){
$(ele).val(val);
};
Run Code Online (Sandbox Code Playgroud)
原谅这个愚蠢的例子.但是最近我一直致力于一个有一些功能需要大量参数的项目.所以我开始将参数作为一个对象传递(不确定这是否是正确的方法),如下所示:
setValue({
val:'foo',
ele:'#bar'
});
Run Code Online (Sandbox Code Playgroud)
然后在功能中:
function setValue(options){
var value = options.val;
var element = options.ele;
$(element).val(value);
};
Run Code Online (Sandbox Code Playgroud)
我的问题是,有更好的方法吗?调用这些"选项"是常见的做法(或没关系)吗?您是否通常需要"解包"(缺少更好的术语)选项并在函数内设置本地变量?我一直这样做,以防其中一个没有定义.
我真的希望不要创造坏习惯并编写一堆丑陋的代码.任何帮助都是由我赞赏和+.谢谢.
在过去4个月左右的时间里,我一直在铁轨上使用红宝石,我一直非常享受开源的整个概念.我知道它不是ruby/rails独有的,但是来自windows编程,这是我第一次接触它.
我想"回馈"我能做什么,但我不觉得我可以贡献任何有价值的开源项目或我自己的宝石.所以我认为一个好的起点是通过记录或编写一些现有项目的测试.
你能指点我几个可能的选择吗?我更喜欢那些非常活跃但同时又不太复杂的项目(因为我现在对ruby并不是很好).
这可能是一个主观问题,但在这一点上我不知道从哪里开始.因此,即使是主观的答案也会受到高度赞赏.
我有一个通过URL传递的ID列表.我想在根据这些ID运行查询之前进行一些清理.我有这个:
<cfset URL.ID = ReReplaceNoCase(URL.ID,"[^0-9]","","ALL")>
Run Code Online (Sandbox Code Playgroud)
但我意识到这也剥离了逗号.有没有一种简单的方法可以从Coldfusion中的列表中删除非数字值?
我最近将一个数据库从一个Windows框转移到了一个linux框.这些表在小写和大写名称之间混合.我需要一种方法将所有表和列重命名为小写.那可能吗?
我在这个SO回答中看到了表格的可能性,但是没有找到任何处理列名的东西.
我正在使用此Rails指南创建一个范围,以便为某些控制器创建"/ admin"前缀.
所以我有一个名为Pages的控制器,我想通过"/ admin/pages"访问它.
scope "/admin" do
resources :pages
end
Run Code Online (Sandbox Code Playgroud)
这很好用,但仍然可以通过"/ pages"访问...我如何防止这种情况?(我正在使用Rails 3)
这是我的路线文件:
devise_for :users
scope "/admin" do
resources :pages
resources :contents
end
root :to => "index#index"
match ':controller(/:action(/:id(.:format)))'
Run Code Online (Sandbox Code Playgroud) ruby ×3
paperclip ×2
coldfusion ×1
erb ×1
imagemagick ×1
javascript ×1
list ×1
mysql ×1
open-source ×1
routes ×1
routing ×1
scope ×1