在我的模型中,Shop我正在保存图像URL logo_ori并使用它来制作缩略图before_update.
# shop.rb
before_update :run_blitline_job
private
def run_blitline_job
# uses logo_ori to make thumbnails
end
Run Code Online (Sandbox Code Playgroud)
但是我发现当我保存其他属性时(例如:在表单中编辑商店的个人资料),它也会运行before_update.仅logo_ori在保存时如何限制其执行?
我试过这个:
before_update :run_blitline_job, :if => :logo_ori?
Run Code Online (Sandbox Code Playgroud)
但before_update如果我logo_ori早先已经保存过,它仍会运行.
当我的会话到期时,Devise正在给我一个无意义的错误,如下所示:

这是我的代码:
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
如何自定义它以便不显示true错误?
如何选择Rails时间以仅显示没有分钟的小时部分?基本上我想要的是用start_time和显示时间过滤器end_time并使用Ransackgem来过滤查询.
# db
create_table "schedules"
t.time "start_time"
t.time "end_time"
# controller
@q = Schedule.ransack(params[:q])
@q.sorts = ['date asc', 'start_time asc', 'end_time asc'] if @q.sorts.empty?
@schedules = @q.result.includes(:klass, :partner, :city)
#view
<%= search_form_for @q do |f| %>
<%= f.label :start_time_gteq, "Start time" %>
<%= f.select_hour :start_time_gteq, start_hour: 5, end_hour: 23 %>
<%= f.submit "Filter" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误:
undefined method `select_hour' for #<Ransack::Helpers::FormBuilder:0x007fb85217e000>
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
<%= f.time_select :start_time_eq, start_hour: 5, end_hour: 23 %>
Run Code Online (Sandbox Code Playgroud)
......但它显示了分钟部分.我检查了API, …
当我试图将我的更改推送到Heroku上的分段dyno时,我在构建时得到了这条消息:
$ git push staging
.
.
.
remote: -----> Installing dependencies using 1.9.7
remote: Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote: Ignoring bcrypt-3.1.10 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.10
remote: Ignoring json-1.8.3 because its extensions are not built. Try: gem pristine json --version 1.8.3
remote: Ignoring nokogiri-1.6.6.2 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.6.2
remote: Ignoring pg-0.18.2 because its extensions are not built. …Run Code Online (Sandbox Code Playgroud) 我想在我的表单助手中放置一个路由助手来执行update操作:
<%= s3_uploader_form post: <route helper goes here>, as: "shop[logo_ori]" do %>
<%= file_field_tag :file %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时,rake routes我没有看到帮助PUT:
shops GET /shops(.:format) shops#index
POST /shops(.:format) shops#create
new_shop GET /shops/new(.:format) shops#new
edit_shop GET /shops/:id/edit(.:format) shops#edit
shop GET /shops/:id(.:format) shops#show
PUT /shops/:id(.:format) shops#update
Run Code Online (Sandbox Code Playgroud)
有问题的表单助手来自 Railscasts#383 的source。我发现上传表单对于创建新模型对象非常有用,但我正在努力让它用于更新模型对象。
当我尝试 route helper 时shops_url,它运行了一个失败的POST操作:
Started POST "/shops" for 127.0.0.1 at 2012-12-27 01:10:22 +0800
Processing by ShopsController#create as */*
Parameters: {"shop"=>{"logo_ori"=>"https://bucket.s3.amazonaws.com/example.gif"}}
User Load …Run Code Online (Sandbox Code Playgroud)