Tag: ruby on rails 5

在Rails中更新RESTful路由的操作(PATCH或PUT)

我是Ruby on Rails的新手。为什么Rails中RESTful路由的更新操作映射到两个HTTP动词,即PATCH和PUT? PATCH /articles/:id(.:format) articles#update PUT /articles/:id(.:format) articles#update 更新资源(通用CRUD)时,调用两者中的哪个方法?

RAILS:具有现有记录的新方法中的嵌套属性

我有模特: Frame.rb belongs_to :manufacturer, foreign_key: ‘model’ accepts_nested_attributes_for :manufacturer, :reject_if => proc { |obj| obj.blank? } 当我尝试使用现有制造商创建新框架时,我收到错误: Frame.new({name: ‘Name of the frame’, manufacturer_attributes: {id:2}}) 错误: Couldn’t find Manufacturer with ID=2 for Frame with ID=

尽管路由已声明,但使用Rails 5(API标志)并且不会出现路由错误

这是我的控制器: class Api::V1::UsersController < ApplicationController respond_to :json def show respond_with User.find(params[:id]) end end 这是我的routes.rb require ‘api_constraints’ Rails.application.routes.draw do devise_for :users # Api definition namespace :api, defaults: { format: :json }, constraints: { subdomain: ‘api’ }, path: ‘/’ do scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do resources :users, :only => [:show] end end end […]

ActionCable:每个用户一个频道

我正在处理我的rails应用程序的通知。 有User模型和控制器以及与用户关联的Like模型与用户有很多喜欢关联。 这个想法是,如果用户喜欢另一个用户的个人资料,该个人资料的所有者将获得实时通知。 这是我理解ActionCable的应用程序。 我研究过有线电视api ,pub-sub对我很新。 我能够通过单一渠道进行成功的沟通,并成功使用了授权 。 但是,我仍然不明白如何使用每个用户的单个频道(动态生成的频道),以便发布给一个用户的消息不会转发给另一个用户。 动态频道可能吗? 或者,是否有其他方式可以满足所有用户的需求

为什么Rails 5将“索引”改为“外键”?

如果你在Rails 4中有这个: t.references :event, index: true 现在你可以在Rails 5中使用foreign_key而不是index 。我不太明白为什么他们决定这样做,因为function保持不变,你要添加的是INDEX,而不是该列的FOREIGN KEY。

Rails 5.0.0.beta1 – 从非清理的请求参数生成URL是不安全的

我们正在从Rails 4.2.5升级到5.0.0.beta1 在测试时,我们希望看到像以前一样使用分页链接呈现的索引视图。 但是我们现在得到一个ArgumentError错误页面,例如: ArgumentError in Transactions#index /app/views/kaminari/_paginator.html.erb where line #10 raised: Generating an URL from non sanitized request parameters is insecure! Application Trace | Framework Trace | Full Trace app/views/kaminari/_paginator.html.erb:10:in block in _app_views_kaminari__paginator_html_erb___4026289994022119719_69904100316060′ app/views/kaminari/_paginator.html.erb:9:in_app_views_kaminari__paginator_html_erb___4026289994022119719_69904100316060′ app/views/transactions/index.html.erb:2:in `_app_views_transactions_index_html_erb__422882858554400818_60602560′ kaminari提出了一个问题 进一步研究这里是新的Rails 5.0.0.beta1代码,现在抛出错误: 将它添加到config / application.rb’修复’它,但不是一个好主意: config.action_controller.permit_all_parameters = true 而是添加这个并不能解决问题,不确定原因: config.action_controller.always_permitted_parameters = [:current_page, :page, :total_pages, :per_page, :remote, :paginator]

Puma Rails 5 binding.pry仅在超时前60秒可用

当我使用binding.pry时,Puma超出了我的请求。 在我的控制器中 def new require ‘pry’ binding.pry end 然后我发出命令,命中控制器并进入pry会话。 彪马60秒后? 超时我的请求,重启一个工人,然后通过调试会话爆炸。 [1] pry(#)> [3522] ! Terminating timed out worker: 3566 [3522] – Worker 0 (pid: 4171) booted, phase: 0 如果重要的话,我用吊带生成了这个应用程序。 如何在rails 5中扩展我的调试会话?

操作电缆与ip绑定后无法正常工作

我已经在我的系统中实现了rails-5的动作电缆,并且它在localhost ,但是当我尝试用ip绑定时,它会给出以下错误消息。 与’ws://192.168.1.46:3002 / cable’的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:404 并在终端日志中 无法升级到WebSocket(REQUEST_METHOD:GET,HTTP_CONNECTION:Upgrade,HTTP_UPGRADE:websocket) 我已经对我的development.rb进行了更改 config.action_cable.url = “ws://192.168.1.46:3002/cable” 但没有成功。 请指导我错在哪里。 告诉我你是否需要额外的信息,提前致谢。

禁用ActionCable事件的rails日志

在development环境中,rails logger记录所有有时令人讨厌的ActionCable事件(对于我的项目,它不时地传输消息并且日志尾部像野马一样运行)。 什么是从ActionCable中抑制所有事件日志的有效方法? 另外,如何抑制某些特定的ActionCable事件?

在Rails 5控制器集成测试中设置cookie.signed

想象一下,有一个控制器集成测试调用控制器方法的场景,其中cookie.signed用于某些完整性检查。 调节器 # app/controllers/foo_controller.rb def index entity = FooEntity.find_by_id(params[:id]) if entity.nil? raise ActionController::BadRequest, ‘Could not find requested entity.’ else @is_authorized = entity.token == cookies.signed[:token] if @is_authorized # Success! The path to be tested. else raise ActionController::BadRequest, ‘Unauthorized cookie token.’ end end end 控制器测试 # app/test/controllers/foo_test.rb require ‘test_helper’ class FooControllerTest < ActionDispatch::IntegrationTest test 'should be working' […]