问题标签 [ruby-on-rails-5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails 基于 Rails Environment 定义根 url
有什么方法可以根据 Rails 环境定义不同的根 url。我想root :to => 'pages#index'
为开发和登台环境以及root :to => 'beta_pages#index'
生产环境设置。
提前致谢。
ruby-on-rails - actioncable 无法连接到 websocket
我无法连接到 actioncable websocket。
我将此行添加到我的 routes.rb
我将此文件添加到我的应用程序路径:cable/config.ru
频道/application_cable/channel.rb
频道/application_cable/connection.rb
和我在 assets/javascript/channels/index.coffee 下的 javascriptfiles
然后我开始了我的rails应用程序:
和我的 ActionCalbe-Server 与:
当我在浏览器中打开我的应用程序时,出现以下错误:
我怎样才能解决我的问题?我没有发现错误:/
ruby-on-rails - 30.seconds.ago 之类的东西是如何实现的?
我在这里找到了这个问题。
30.seconds.ago
真的很想知道如何在 Rails 中实现类似的东西的技术解释。
方法链?Numeric
按照以下方式使用:http:
//api.rubyonrails.org/classes/Numeric.html#method-i-seconds。
还有什么?
ruby-on-rails - Rails:多个控制器共享的方法
我有两个控制器,即 1)carts_controller 2)orders_controller
注意:method3
正在使用method1
和method2
。
CartsController
有showcart.html.erb
使用method3的视图并且工作正常。
现在从订单的角度来看,我需要显示购物车(showcart.html.erb
),但由于method3
定义了帮助程序,carts_controller
因此它无法访问它。
如何解决?
ruby-on-rails - CollectionProxy vs AssociationRelation
我想知道ActiveRecord::Associations::CollectionProxy
和之间的区别ActiveRecord::AssociationRelation
。
所以如果我这样做:
v = Vehicle.new
v.wheels # => #<ActiveRecord::Associations::CollectionProxy []>
v.wheels.all # => #<ActiveRecord::AssociationRelation []>
我不知道它们之间有什么区别,为什么要这样实现?
api - 为什么 Rails 5 边缘版 API-only 应用程序在 Gemfile 中包含 Sprockets 和 SAAS?
我使用以下命令生成了一个基于 Rails 5 edge 版本的仅骨架 API 应用程序:
它的Gemfile包括 Sprockets 和 SASS gems,可以在其中看到。
我只是想知道 Sprockets 和 SASS 应该在仅 API 的应用程序中起到什么作用?是故意这样做还是在 Rails 5 正式发布时应该修复。
我还观察到,当生成 Rails 应用程序时,生成器确实创建了 assets 文件夹,但是稍后将其删除,如下所示的输出所示:
谢谢。
params - Rails 5 - 控制器规范示例 - 将参数设置为 nil 值将其值设置为空白字符串
我在基于Rails 4.2.0 和 Ruby 2.2.1的仅 API 应用程序中传递了以下控制器规范示例
但是,针对Rails 5(边缘版本)和 Ruby 2.2.3评估我的应用程序,相同的规范失败并出现以下错误:
我确实在几个点检查了 Rails 源代码,发现 nil 值在到达控制器的目标操作逻辑之前被转换为空白值。
这种改变的行为是将属性设置为空字符串,而它们应该是 nil。
在我的应用程序的 Gemfile(用于使用 Rails 5)中,我使用以下代码指定了 Rails:
在 Gemfile.lock 中可以看到以下内容(Gem 和 Dependencies 部分被截断以缩短它):
任何人都可以让我知道是什么变化导致了这种情况吗?我想这与 Rails 5 或最新 Rack 的变化有关。这是某种应该在最终发布版本中修复的错误,还是故意更改。
active-model-serializers - ActiveModelSerializers (0.10.0.rc3) 对象的关系不是使用默认的 FlattenJson 适配器生成的
Rails 5 Alpha 版本 / Ruby 2.2.3 / active_model_serializers (0.10.0.rc3)(以下简称 AMS)
我已经有一个使用Rabl-Rails生成 JSON 响应的纯 API 应用程序。
我正在努力使其准备好与 Rails 5 一起使用,作为评估 Rails 5 内置 API 功能的一部分,尤其是 ActiveModel::Serializers 可以提供的可重用性和灵活性。
我创建了几个序列化程序
应用程序中的 JSON 响应是使用任何现有模板以复合方式创建的,并且base_serializer包含有关可以序列化的资源的基本数据。
下面显示的是我最初创建的 3 个序列化程序:
对于 ActiveRecord 型号设备
对于 ActiveRecord 模型客户端
对于 ActiveRecord 模型提供者
提供者模型
客户模型
设备型号
问题
序列化 Device 对象时,其客户端节点不包含Client::BaseSerializer中定义的客户端提供程序节点belongs_to :provider, serializer: Provider::BaseSerializer
但是,在序列化 Client 对象时,它包含提供程序节点:
从上面可以看出,当我们在其“客户端”属性中生成设备的 json 时,并没有生成客户端的提供者关系。但是,当我们生成客户端的 json 时,它包含“提供者”属性。传递任何包含选项,如下所示
如此处所述没有任何效果。
我深入研究了 AMS 源代码,发现include
只有当适配器是JSON API
. 但是,默认适配器是base.config.adapter = :flatten_json
.
从适配器的实现和方法(如下所示)中可以看出,ActiveModel::Serializer#attributes(options = {})
在序列化期间仅考虑以下数据:
- 对象的属性
- 对象的关系及其属性。不考虑关系自身的关系。
ActiveModel::Serializer::Adapter::FlattenJson < ActiveModel::Serializer::Adapter::Json
ActiveModel::序列化器
由于我的 JSON 结构是自定义和预定义的,因此我无法切换到 JSON API 适配器。这留下了仅使用属性的选项,例如
但是这样我就无法灵活地为:provider 属性使用自定义序列化程序。
问题:
有什么办法可以解决上述问题并达到预期的效果?
是否有任何规定可以忽略属性被包含在序列化哈希中?例如,在我的 JSON 模板中使用 Rabl-Rails,我可以执行以下操作:
/li>
如果DeviceDecorator#exclude_client?
返回 false,则不会在 JSON 中生成 :client 节点。
谢谢。
sprockets - 升级后如何在 Rails 5 中使用 sprockets 4
在升级我的 Rails 4.2 应用程序后,我一直在尝试使用 Rails 5。
更改版本后,我使用了命令bundle exec rake rails:update
访问某些视图时出现错误:
ruby-on-rails - 未初始化的常量 > ActionCable::Server::Configuration::ApplicationCable
当我运行服务器时,它的抛出错误显示在下面的日志中。我用谷歌搜索了很多,但没有找到背后的原因。有人请给它一些光。
宝石文件
日志: