Tag: ruby on rails 4

在Rails4中添加子类别

我有很多主要类别,并希望添加到每个子类别.-> 主要类别 – 子类别 – 子类别 – 子类别 主要类别 – 子类别 – 子类别 – 子类别 很多人建议我使用gem,但由于我对Rails相当新,我宁愿自己学习如何做到这一点,也要学习他们所有的方法。 我应该从Scaffold还是仅仅是Model ? 有人可以解释我如何开始(迁移等)以及如何设置它? 谢谢。

在Rails 4中发送带有远程true的表单

我有一个用于更新图像的表单 true do |f| %> 行动有 respond_to do |format| format.js format.html end 但我收到以下错误 ActionView::MissingTemplate – Missing template users/update_image, application/update_image with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}. 我没有update_image.html.erb模板,但是从错误中我得知请求不是以js格式发送的 我错过了什么?

如何将Devise和ActiveAdmin用于相同的用户模型?

我有ActiveAdmin和Devise与用户合作。 我想使用Devise登录具有相同用户模型的常规非管理员用户。 我怎样才能做到这一点? (我想在User模型中只为管理员设置一个admin标志。)我尝试将第二行添加到routes.rb devise_for :users, ActiveAdmin::Devise.config devise_for :users 但是当我试图列出路线时,它给出了一个错误 >rake routes DL is deprecated, please use Fiddle rake aborted! ArgumentError: Invalid route name, already in use: ‘new_user_session’ You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with […]

Rails 4:如何通过AJAX更新基于另一个collection_select的collection_select?

问题:我需要根据组织集合的选择过滤单位集合。 选择组织后 , 单位下拉菜单应刷新以仅显示属于知情组织的单位 。 我检查过这些问题: Rails表单:使用AJAX基于其他collection_select值更新collection_select选项 UJS,AJAX,Rails 4,form_for collection_select将值传递给方法并将值返回到表单 带有collection_select的rails中的ajax 如何添加onchange事件以在rails中选择标记 Rails表单:使用AJAX基于其他collection_select值更新collection_select选项 Rails form_for collection_select忽略select_tag接受的远程ajax调用 远程选择,控制器需要更多表格数据 这些文件: http://guides.rubyonrails.org/form_helpers.html http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_from_collection_for_select 到目前为止这是我的代码: 楷模 class Organization < ActiveRecord::Base has_many :units has_many :projects, through: :units end class Unit < ActiveRecord::Base belongs_to :organization has_many :projects end class Project < ActiveRecord::Base belongs_to :organizaton has_one :organization, through: :unit end 查看 […]

Rails关联中的未知密钥

我有以下协会代码: has_many :rates_without_dimension, :as => :rateable, :class_name => “Rate”, :dependent => :destroy, :conditions => {:dimension => nil} has_many :raters_without_dimension, :through => :rates_without_dimension, :source => :rater has_one :rate_average_without_dimension, :as => :cacheable, :class_name => “RatingCache”, :dependent => :destroy, :conditions => {:dimension => nil} dimensions.each do |dimension| has_many “#{dimension}_rates”, :dependent => :destroy, :conditions => {:dimension => dimension.to_s}, :class_name […]

错误运行gem install pg -v’0.15.1′

运行 gem install pg -v ‘0.15.1’ 给出错误: 构建原生扩展。 这可能需要一段时间…错误:安装pg时出错:错误:无法构建gem原生扩展。 /home/askar/.rvm/rubies/ruby-1.9.3-p429/bin/ruby extconf.rb checking for pg_config… no No pg_config… trying anyway. If 构建失败,请再次尝试使用–with -pg-config = / path / to / pg_config检查libpq-fe.h …否找不到’libpq-fe.h header * extconf.rb失败*由于某些原因无法创建Makefile,可能缺少必要的库和/或标头。 检查mkmf.log文件以获取更多详细信息。 您可能需要配置选项。 提供的配置选项: – with-opt-dir –without-opt-dir –with-opt-include –without-opt-include = $ {opt-dir} / include –with-opt-lib – without-opt-lib = $ {opt-dir} / lib –with-make-prog […]

rails 4中的“find_all_by_id”等价物

我有一组id,我想使用活动记录查询从数据库中找到它们各自的记录。 例如: ids = [2, 3, 1] 现在,让我找到一个特定模型的所有记录,其id是数组中的一个,在较低版本的rails中,我想我可以做类似的事情: Model.find_all_by_id([2, 3, 1]) 但根据这篇文章 , These methods were deprecated on 4.0 and removed at 4.1. If you want to keep sing then you need to include this gem https://github.com/rails/activerecord-deprecated_finders 我的问题是,我无法在rails4.2中执行此操作而无需包含gem? 谢谢。

为什么ActionDispatch :: Routing :: RouteSet需要这么长时间

我在Rails 4.2.1上使用Grape为我们的应用程序提供API。 但是当我今天检查Newrelic的性能时,我发现RackApp Proc#call和Grape API::Root#call占用了大量的时间。 (见截图) 然后我尝试使用rack_timer记录中间件中消耗的时间,发现ActionDispatch::Routing::RouteSet占用了大部分时间: Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 67.12579727172852 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 101.51457786560059 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 84.18059349060059 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 1236.2565994262695 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 8.124351501464844 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 55.65309524536133 ms […]

在rails_admin paper_trail历史记录中显示User的自定义标签

当我转到paper_trail历史记录页面时,我在User列中看到User对象( #<User:0x007f59a9… )。 有没有办法配置它使用其中一个用户属性? 我以为我可以使用object_label_method但我似乎没有运气。 更新: 我认为这纯粹是一个显示问题但是paper_trail实际上是在版本表的#<User:0x007f59a9…列而不是ID中存储像#<User:0x007f59a9…这样的字符串。 我在ApplicationController覆盖了user_for_paper_trail ,虽然这在我的前端应用程序中成功记录了带有用户ID的版本,但它不在rails_admin中。 根据这个线程 ,rails_admin应该看到我的自定义方法,因为“RailsAdmin :: ApplicationControllerinheritance自你的:: ApplicationController”。 有关为什么会发生这种情况以及如何让paper_trail存储用户ID的任何想法?

Rails 4 Racing / Concurrency。 避免死锁

我目前在Sidekiq-Unique-Jobs和Sidekiq-Status的帮助下使用Sidekiq在我的应用程序上执行任务。 工人执行的工作很小,几乎总是立即执行。 (很少或根本没有队列) 我正在“黑客攻击”sidekiq同步执行任务(检查Controller无法找到工作人员创建的对象 ),这些作业很小且执行速度快(通常不到1秒)。 我的应用程序需要同步运行作业并获取其详细信息(记录创建/更新) 随着我使用的“跛脚”解决方案: 20.times do status = Sidekiq::Status::get balance, :exp_status if [“done”].include?(status) break end sleep(0.2) end 创建一个队列并确保通过params(sidekiq-unique-jobs)同一个用户同时执行不超过1个作业我可以避免所有死锁,但是我觉得它应该是一个更好的方法来执行此操作,而不是黑客sidekiq因为它意味着异步执行作业。 问题是 :对于sidekiq是否有任何替代或类似的gem可以限制输入但是默认情况下是同步运行的? 我不能只问控制器Balance.find_or_create_by(user: user, market: market)因为它迟早会给我死锁(记录被同时编辑/操纵/创建)但我觉得这个sidekiq解决方案我从长远来看,使用也不行。 我错过了一些基本的东西吗? 如何确保通过中间件或类似的东西不会同时执行重复的参数/动作以避免死锁?