小编ser*_*ine的帖子

Rails:如何只为一个更改的属性运行before_update?

在我的模型中,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早先已经保存过,它仍会运行.

activerecord ruby-on-rails beforeupdate ruby-on-rails-3

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

设计显示"true"的timedout错误

当我的会话到期时,Devise正在给我一个无意义的错误,如下所示:

在此输入图像描述

这是我的代码:

<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如何自定义它以便不显示true错误?

ruby-on-rails devise ruby-on-rails-3

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

Rails时间选择仅显示小时?

如何选择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, …

ruby-on-rails ransack drop-down-menu ruby-on-rails-4

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

Heroku LoadError:libruby.so.2.2

当我试图将我的更改推送到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)

ruby-on-rails heroku ruby-on-rails-4

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

Rails 更新操作的路由助手是什么?

我想在我的表单助手中放置一个路由助手来执行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)

rest ruby-on-rails ruby-on-rails-3

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