标签: ruby-on-rails-6

无法使用 Rails 6 在生产环境中加载资产资源(css + js)

当我在生产模式下启动应用程序时,资产(css + js)无法正确加载。

我进入浏览器控制台net::ERR_ABORTED 404 (Not Found)或 Rails 日志ActionController::RoutingError (No route matches [GET] "/packs/js/application-51bdb73d26ac893c3407.js"):

我制作rake assets:precompile并提交config.assets.compile = true了environments/Production.rb,但结果相同

对于生产模式,我使用相同的应用程序和相同的目录,我只是将其-e production作为参数添加到rails server命令中

css ruby-on-rails webpacker ruby-on-rails-6

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

rescue_from StandardError 覆盖其他rescue_from 块

我正在尝试创建一个模块来处理我includeapplication_controller.rb. 这是我的模块的self.included功能。

def self.included(clazz)
  clazz.class_eval do

    rescue_from ActiveRecord::RecordNotFound do |e|
      respond(:record_not_found, 404, e.message)
    end
    rescue_from ActiveRecord::RecordInvalid do |e|
      respond(:record_invalid, 422, e.record.errors.full_messages)
    end
    rescue_from ActionController::ParameterMissing do |e|
      respond(:bad_request, 400, e.message)
    end
    rescue_from StandardError do |e|
      respond(:standard_error, 500, e.message)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是StandardError捕获所有错误,包括我在其他块中定义的其他错误rescue_from

我想实现这样的目标:

begin

rescue ActiveRecord::RecordNotFound => e

rescue ActiveRecord::RecordInvalid => e

rescue ActionController::ParameterMissing => e

rescue StandardError => e

end
Run Code Online (Sandbox Code Playgroud)

我在这里先向您的帮助表示感谢。

ruby ruby-on-rails ruby-on-rails-6

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

Rail6 db:migrate 失败 - 参数数量错误(给定 1,预期 0)

我无法在 Windows 7 上的 Rail 6 中创建表(即成功运行 db:migrate)。

以防万一我通过安装 Ruby 2.6 开发包并执行“gem install Rails”完全重新安装了 Rails,这对我来说安装了 Rails 6.0.3.1

我创建了一个新项目,所做的第一件事是生成一个“客户”模型,之后我在失败并提示“给出了错误数量的参数”后立即运行 db:migrate 命令。见下文。

C:\Apps\rails>cd cmdb

C:\Apps\rails\cmdb>rails generate model Customer string:name

      invoke  active_record
      create    db/migrate/20200525080817_create_customers.rb
      create    app/models/customer.rb
      invoke    test_unit
      create      test/models/customer_test.rb
      create      test/fixtures/customers.yml

C:\Apps\rails\cmdb>rails db:migrate

== 20200525080817 CreateCustomers: migrating ==================================
-- create_table(:customers)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

wrong number of arguments (given 1, expected 0)
C:/Apps/rails/cmdb/db/migrate/20200525080817_create_customers.rb:4:in `block in change'
C:/Apps/rails/cmdb/db/migrate/20200525080817_create_customers.rb:3:in `change'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails dbmigrate ruby-on-rails-6

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

Rails 6 Asset Pipeline:如何在 application.js 中导入供应商脚本?

我正在尝试在 application.js 下正确导入供应商 js 文件app/javascript/packs/application.js

这是当前的架构:

javascript 文件夹架构

可以看到,我选择将供应商 js 文件放入app/javascrip/plugins/

我的结构application.js如下:

// Rails Internals
require("@rails/ujs").start();
require("turbolinks").start();
require("@rails/activestorage").start();
require("channels");

// Libraries/Vendor-plugins
require("jquery");
import 'bootstrap';
require('../plugins/chosen.min.js');
require('../plugins/magnific-popup.min.js');
require('../plugins/owl.carousel.min.js');
require('../plugins/rangeSlider');
require('../plugins/sticky-kit.min.js');
require('../plugins/masonry.min.js');
require('../plugins/mmenu.min.js');
require('../plugins/tooltips.min.js');
require('../plugins/custom');


// Custom functions
// import { myFunction } from '../components/myScrip';

document.addEventListener('turbolinks:load', () => {
});

Run Code Online (Sandbox Code Playgroud)

custom.js通过这样做,位于 中的文件应该可以访问 jQuery app/javascript/plugins/custom.js,对吧?

为了清楚起见, 的custom.js形状如下:

(function ($) {
    "use strict";
    $(document).ready(function () {
      // ...
    }
})(this.jQuery);
Run Code Online (Sandbox Code Playgroud)

但是当我运行服务器时,找不到 jQuery:

jquery 错误

yarn add jquery@3.5.1 bootstrap@3.4.1我通过(供应商需要的旧版本)添加了 jQuery …

jquery asset-pipeline webpack ruby-on-rails-6

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

所有示例的 Ruby on Rails 失败/错误

我正在按照本指南构建restful json api https://www.digitalocean.com/community/tutorials/build-a-restful-json-api-with-rails-5-part-one#project-setup

我遵循了每一个步骤,直到模型区域(有 5 个区域,先决条件,项目设置,模型,控制器,结论)开始测试......但是,当我尝试运行任何测试时,我的所有示例(其中 5 个)他们)都失败了。

C:\Users\nion1\todos-api>bundle exec rspec
FFFFF
Failures:

1) Item
 Failure/Error: example.run
   `name` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
 # ./spec/rails_helper.rb:53:in `block (3 levels) in <top (required)>'
 # ./spec/rails_helper.rb:52:in `block (2 levels) in <top (required)>'

2) Item
 Failure/Error: example.run
   `name` …
Run Code Online (Sandbox Code Playgroud)

ruby api rest ruby-on-rails ruby-on-rails-6

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

Rails 6,如何通过迁移创建自定义主键?

我正在尝试在 Rails 6 中创建自定义主键,但没有创建主键,而是创建了普通 id。

我已经给予的移民

def change
create_table(:m_user_status, :id => false) do |t|
  t.integer :id, :options => 'PRIMARY KEY'
  t.string :status_name, limit: 20
  t.integer :status_check
  t.timestamps
end  
Run Code Online (Sandbox Code Playgroud)

从上面刚刚创建了 int4 类型的 id,但我想创建 int4 类型和主键而不自动递增的 id。我如何在不自动递增的情况下给出 id 并输入 int4(整数正常)

ruby-on-rails ruby-on-rails-6

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

如何查询附加了Active Storage且图像可变的记录?

如何查询所有附加图像的用户以及图像的位置.variable?

例如

我可以做这个

# controller

@users = User.all

Run Code Online (Sandbox Code Playgroud)

看法:


<% if user.image.attached? && user.image.variable? %>
<!-- display image -->
<% end %> 

Run Code Online (Sandbox Code Playgroud)

@users我想知道是否可以简单地只查询那些同时满足user.image.attached?和条件的逻辑,而不是在视图中包含该逻辑user.image.variable?

这可以通过某些 Active Record 查询实现吗?

activerecord ruby-on-rails rails-activestorage ruby-on-rails-6

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

rails 6 设计创建用户和帐户 ActiveModel::UnknownAttributeError(用户的未知属性“帐户”。):

嗨,我有一个 rails 6 应用程序,我希望用户在注册时创建一个帐户。

我正在使用设计进行身份验证。

我有两个模型用户(设计)和帐户

class User < ApplicationRecord
  has_merit
  enum role: [:user, :tech, :admin, :manager]
  belongs_to :account
  accepts_nested_attributes_for :account
  after_initialize :set_default_role, :if => :new_record?

  def set_default_role
    self.role ||= :admin
  end

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :invitable, :registerable,
         :recoverable, :rememberable, :validatable
end

class Account < ApplicationRecord
  has_many :users, dependent: :destroy
  has_many :clients, dependent: :destroy
end
Run Code Online (Sandbox Code Playgroud)

在注册(设计注册)期间,我希望用户创建一个帐户。

在控制台中它的工作原理:

User.create(email: 'test@email.com', password: "test", password_confirmation: "test, account_attributes: {name: "testaccount"})
Run Code Online (Sandbox Code Playgroud)

按预期创建。 …

ruby-on-rails devise ruby-on-rails-6

0
推荐指数
1
解决办法
794
查看次数

Cookie 未保存在 Rails 6 中

我在一个新项目中使用 rails 6.0,之后没有设置 cookie

 Include ActionDispatch::Cookies 
 Include ActionDispatch::Session::CookieStore 
  before_action :cookie_set
  def cookie_set
    cookies[:test] = {value: 'testset'}
  end
Run Code Online (Sandbox Code Playgroud)

浏览器 cookie 为空

ruby ruby-on-rails ruby-on-rails-6

0
推荐指数
1
解决办法
1736
查看次数

给定这个数组数组,我如何计算包含重复元素的数组的数量?

我有一个看起来像这样的数组:

[[["Sports", "Soccer"], 2], [["eSports"], 1], [["Sports", "Soccer"], 3]]
Run Code Online (Sandbox Code Playgroud)

在最外层数组的任何元素中,第一个元素(数组)是类别列表。第二个元素是program.id这个类别数组来自。

因此,取上述数组中的第一个元素 -["Sports", "Soccer"]是 的类别数组program_id: 2

如何计算类别数组重复的实例?在上述情况下,我想要的是这样的:

["Sports", "Soccer"] => Occurs 2 times, with Program Ids: 2 & 3
["eSports"] => Occurs 1 time, with Program Id: 1
Run Code Online (Sandbox Code Playgroud)

我如何有效地做到这一点?

ruby arrays ruby-on-rails ruby-on-rails-6

0
推荐指数
1
解决办法
65
查看次数