Tag: ruby on rails 4

Rails:如何检查列是否有值?

我怎么能做到这一点? … Cell: … 我想测试代理是否有一个单元格号,如果有,则显示条件内的内容。 我目前所做的似乎并不起作用; 它只显示“Cell:”。 思考?

将partial转换为method / block以获得速度

我有一个循环,呈现部分 1000.times do |i| render partial: ‘test’, locals: {i: i} end 对于foreach渲染调用,这非常慢,最长可达0.1 ms,即使部分仅打印出i my_partial = render_to_method(partial: ‘test’) 1000.times do |i| my_partial(locals: {i: i}) end 现在这应该以更快的方式做同样的事情吧? 但我不知道该怎么做。 更新: 我试过这样做: Haml::Engine.new(File.read(File.expand_path File.dirname(FILE)+”/../table/#{column.macro}/_#{column.display_type}.haml”)) .‌​render(OpenStruct.new({column_value: column_value, object: object})) 两个主要缺点: 视图的路径不会像使用渲染时那样观察回退(parital:’partial’将在当前视图dir,某些gem以及视图/应用程序中查找parital。 Rails视图助手不再可用 更新2: 许多答案试图通过使用其他技术来解决问题。 我的真实应用这种技术无法应用。 https://github.com/antpaw/bhf/blob/master/app/views/bhf/pages/_platform.haml#L54主要是因为这一行是一个动态字符串,有时会链接到甚至不存在的部分在gem中并在main_app中定义。 我想知道为什么做一些如此基本的事情是如此困难:1。抓住观点。 2.渲染它。 (3.再次渲染。) 更新3: @Flash Gordon建议这个https://gist.github.com/antpaw/d6670c23d6f08e35812e#file-gistfile1-haml-L54 template = lookup_context.find_template “#{column.macro}/#{column.display_type}”, [‘bhf/table’], true template.render(self, {column_value: […]

如何在rails中创建自定义环境作为默认环境?

我通过添加新文件config/environments/staging.rb在我的rails应用程序中created了一个自定义暂存环境,与config/environments/development.rb ,然后添加了数据库配置config/database.yml staging: adapter: sqlite3 database: db/staging.sqlite3 pool: 5 timeout: 5000 现在,我想让我的rails应用程序的default environment而不是开发。如何实现它?

为什么设计不在登录页面上显示身份validation错误?

我正在使用rails 4.2 我有一个名为devise_helper.rb的帮助文件 module DeviseHelper def devise_error_messages! return “” if resource.errors.empty? messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join sentence = I18n.t(“errors.messages.not_saved”, count: resource.errors.count, resource: resource.class.model_name.human.downcase) html = <<-HTML #{sentence} #{messages} HTML html.html_safe end end 自定义错误消息,它适用于注册和密码页面,但不适用于会话页面。 为什么是这样? 我知道我可以添加这样的东西: ‘close’ %> ‘close’ %> 我的application.html.erb文件和错误消息将显示在那里,但我不明白为什么我必须添加,当我已经有设计帮助器。 对于密码和注册,我只需要添加但是会话页面似乎没有这种方式。 我不确定这是否如何设计或者是否有我遗漏的东西。 编辑:我生成了会话控制器,但自从生成它以来我从未改变过任何内容。 根据我的理解,设计将只使用其默认控制器,直到我更改我生成的那个。 我的密码控制器也是这样的。 我确实对注册控制器进行了一些更改,以配置允许的参数。 class Users::SessionsController < Devise::SessionsController end

尝试使用Rails和PostgreSQL生成模型时,命令会挂起而不会出错

使用此命令时: rails generate model Event name:string 什么都没发生,我必须CTRL + c。 我正在使用的版本是: Ruby 2.1.1p76 Rails 4.1.0 PostgreSQL 9.3.4 Mac OS X 10.9.3 我已经validationPostgres正在工作,我可以通过运行psql easyEventTracker_development连接到它。 我通过运行rails new easyEventTracker -d postgresql设置我的rails项目 运行rake db:create ,我收到以下消息: easyEventTracker_development已经存在 easyEventTracker_test已经存在 database.yml文件的内容: default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: easyEventTracker_development test: <<: *default database: easyEventTracker_test production: <<: *default database: […]

Rails弹性搜索聚合

不知怎的,我似乎无法获得包含我的聚合的回复…… 使用curl它按预期工作: HBZUMB01$ curl -XPOST “http://localhost:9200/contents/_search” -d ‘{ “size”: 0, “aggs”: { “sport_count”: { “value_count”: { “field”: “dwid” } } } }’ 我收到了回复: { “took”: 4, “timed_out”: false, “_shards”: { “total”: 5, “successful”: 5, “failed”: 0 }, “hits”: { “total”: 90, “max_score”: 0.0, “hits”: [] }, “aggregations”: { “sport_count”: { “value”: 399 } } } […]

Rails自定义validation – 只有一条记录可以为真

我正在尝试编写一个validation,其中只有一条记录可以为真。 我有一个带有’主动’布尔列的’游戏’模型,任何时候只有一个游戏可以激活,所以如果有人试图在已经有效的游戏中创建新的“游戏”记录,那么他们应该会收到错误。 以下是我目前所拥有但不起作用的内容! validate :active_game def active_game if active == true && Game.find_by(active: true) == true errors[:name] = “a game is already active!” end end

Rails 4.1 Mailer预览和设计自定义电子邮件

我有一个全新的Rails 4.1.1应用程序,我正在自定义Devise电子邮件。 我想让它们显示在新的Rails电子邮件预览function上,所以我做了以下事情: 1)在我的config/development.rb文件中添加了以下代码段: config.action_mailer.preview_path = “#{Rails.root}/lib/mailer_previews” 2)在app/mailers/user_mailer.rb创建我的自定义Devise电子邮件UserMailer : class UserMailer < Devise::Mailer helper :application # gives access to all helpers defined within `application_helper`. include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url` layout "notifications_mailer" end 3)更改了config/initializers/devise.rb以包含以下代码段: config.mailer = ‘UserMailer’ 4)使用以下内容将类UserMailerPreview添加到lib/mailer_previews : class UserMailerPreview < ActionMailer::Preview def confirmation_instructions UserMailer.confirmation_instructions(User.first, {}) end def reset_password_instructions UserMailer.reset_password_instructions(User.first, {}) end def unlock_instructions […]

add_dependency和add_runtime_dependency之间的区别?

在Rails引擎的gemspec中使用add_dependency和add_runtime_dependency有什么区别? 例如: Gem::Specification.new do |s| s.add_dependency ‘jquery-rails’ s.add_runtime_dependency ‘jquery-rails’ end 它们之间有什么区别?

Capistrano 3 + Sprockets 3 + Rails 4.2.1不会部署?

我运行了bundle update并将更新的sprockets更新到3.0.0。 当我尝试通过Capistrano 3进行部署时,出现以下错误: INFO [e54ac5ca] Running /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup as deploy@xx.xxx.xxx.xx DEBUG [e54ac5ca] Command: cd /var/www/testapp/releases/20150414002210 && /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup DEBUG [e54ac5ca] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’ DEBUG [e54ac5ca] : No such file or directory DEBUG [d2c5a990] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’ DEBUG [d2c5a990] : No such file or directory cap aborted! SSHKit::Runner::ExecuteError: Exception […]