小编Dee*_*eep的帖子

路由关注定义资源的不同参数

最近我从这个讨论中了解了路由中的rails问题 如何在命名空间和根路径的路由中有一个资源--Rails 4.现在在我的应用程序中,我有这样的路线:

namespace :admin do
  resources :photos
  resources :businesses
  resources :projects
  resources :quotes
end
resources :photos, param: 'slug'
resources :businesses, param: 'slug' do
  resources :projects, param: 'slug' #As I need both the url one inside business and one outside
end
resources :projects, param: 'slug'
resources :quotes, param: 'slug'
Run Code Online (Sandbox Code Playgroud)

而且还有更多的资源在我需要的时候重复着.我知道如何实施它们.关心我可以这样做:

concern :shared_resources do
  resources :photos
  resources :businesses
  resources :projects
  resources :quotes
end
namespace :admin do
  concerns :shared_resources
end
concerns :shared_resources
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能param在每次关注中给出不同的看法?我尝试这样做:

concerns :shared_resources, param: 'slug'
Run Code Online (Sandbox Code Playgroud)

但这并没有改变路线.如果我补充:

resources …
Run Code Online (Sandbox Code Playgroud)

routes ruby-on-rails ruby-on-rails-4

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

使用 ruby​​zip 压缩并在 Windows 上解压后,Xlsx 文件在 MS Excel 上会出现错误

实际上我的要求是将一些文件压缩到一些文件夹中。我已经在我的服务器上保存了许多文件并与一些对象关联。所以我必须压缩与一个对象相关的所有文件,如下所示:

  • 主文件夹
    • 子文件夹
      • 另一个文件夹
        • XLSX 文件

这是我的层次结构的一个示例。我所做的是创建这些文件夹,复制这些文件夹中的文件,并使用以下代码创建 zip:

https://github.com/rubyzip/rubyzip/blob/05916bf89181e1955118fd3ea059f18acac28cc8/samples/example_recursive.rb

在 ruby​​zip 库本身上找到。但是,当我在 Windows 上解压缩此文件并在 Microsoft Excel 中打开它时,出现以下错误:

我们发现“FileName.xlsx”中的某些内容存在问题。您希望我们尽力恢复吗?如果您信任此工作簿的来源,请单击“是”

按“是”可以恢复文件,但我不知道为什么会出现此错误。我尝试在将 Excel 文件复制到工作正常的服务器上时打开该文件,但是一旦压缩并解压缩该文件,就会出现错误。我已经看到了该主题的一些不同问题,例如:

由 ruby​​zip 压缩的 xlsx 无法被 Excel 读取

但没有得到帮助。

我尝试做的更多事情就是设置压缩级别,并尝试将其设置为Zlib::DEFAULT_COMPRESSIONruby​​zip,但尽管如此,我还是遇到了同样的问题。另外,在某些地方,甚至在自述文件中,如果 ruby​​zip 我发现我们可以使用:

改用write_bufferopen

我在这条线上尝试了它(我能找到的最好的):

https://github.com/rubyzip/rubyzip/blob/7aa3666e341b4ecf3b66321d734802a77bba962b/lib/zip/file.rb#L311

但它给了我一个不同的例外,所以如果这是解决方案,我不知道如何使用它。

ruby ruby-on-rails rubyzip ruby-on-rails-3 axlsx

6
推荐指数
0
解决办法
676
查看次数

如何仅在拉取请求中的已更改文件上运行Rubocop?

我创建了spec/lint/rubocop_spec.rb,它在当前分支和master之间更改的文件上运行Rubocop样式检查器.这在我本地测试时有效,但在构建服务器Circle.ci上运行测试时则无效.我怀疑这是因为只有有问题的分支被下载,所以它没有找到master之间的任何差异.有比这更好的方法git co master && git pull origin master吗?我是否可以查询Github API以获取列出的文件?

require 'spec_helper'

describe 'Check that the files we have changed have correct syntax' do
  before do
    current_sha = `git rev-parse --verify HEAD`.strip!
    files = `git diff master #{current_sha} --name-only | grep .rb`
    files.tr!("\n", ' ')
    @report = 'nada'
    if files.present?
      puts "Changed files: #{files}"

      @report = `rubocop #{files}`
      puts "Report: #{@report}"
    end
  end

  it { @report.match('Offenses').should_not be true }
end
Run Code Online (Sandbox Code Playgroud)

git ruby-on-rails continuous-deployment circleci rubocop

5
推荐指数
2
解决办法
4469
查看次数

Rails Engine 资源未预编译

我正在研究轨道并使用带轨道的发动机。在生产模式下,rails 没有加载引擎的编译资源,尽管我已经执行了:

$ RAILS_ENV=production bundle exec rake assets:clean assets:precompile
Run Code Online (Sandbox Code Playgroud)

如果有人知道这个问题请帮忙。

我的设置如下:

环境/生产.rb

config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = false 
config.assets.compile = false 
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new`
Run Code Online (Sandbox Code Playgroud)

引擎/xxx/lib/xxx/engine.rb

引擎的选项是——可安装

 module Moderna  
  class Engine < ::Rails::Engine  
    isolate_namespace xxx

    # parent company asset precompile
    initializer "xxx.assets.precompile" do |app|

      app.config.assets.paths << Rails.root.join("app", "assets", "fonts")

      app.config.assets.precompile << %w(
        xxx/*.css xxx/fancybox/*.css xxx/skin/*.css xxx/google-code-prettify/*.css
        xxx/*.js xxx/flexslider/*.js xxx/google-code-prettify/*.js
        xxx/portfolio/*.js …
Run Code Online (Sandbox Code Playgroud)

production assets ruby-on-rails precompiled

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

在Maverick中在Rails中安装Ruby时出错

我已尝试过在此处发布的类似问题提供的多种解决方案,但似乎没有任何效果.我无法安装Rails.错误信息如下.另外,Wwen我试着通过使用安装Xcode xcode-select --install,它给我一个网络安装cannot download due to network请指教.我是Ruby的新手,所以非常感谢任何帮助.干杯.

nmacaule-mn1:~ nmacaule$ gem install rails --no-ri --no-rdoc
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

    /Users/nmacaule/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20150209-56320-1m9byas.rb extconf.rb
checking if the C compiler accepts ... yes
checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future... no
Building nokogiri using packaged libraries.
-----

The file "/usr/include/iconv.h" is missing in your build environment,
which means you haven't installed Xcode Command Line Tools …
Run Code Online (Sandbox Code Playgroud)

rubygems ruby-on-rails extconf.rb

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

Ruby 3.0 - 参数数量错误(给定 3,预期 1..2)

我们有一个正在使用 uk_postcode gem 的项目。有一个验证器类如下:

class UkPostcodeValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    postcode = UKPostcode.parse(value.to_s)
    return if postcode.full_valid?

    record.errors.add attribute, :invalid_uk_postcode, options
  end
end 
Run Code Online (Sandbox Code Playgroud)

上面的代码在 Ruby 2.7.6 上运行良好,但现在我需要更新到 Ruby 3.0.0。当我这样做时,我们的测试会中断并给出以下错误:

Failure/Error: record.errors.add attribute, :invalid_uk_postcode, options
     
     ArgumentError:
       wrong number of arguments (given 3, expected 1..2) 
Run Code Online (Sandbox Code Playgroud)

我的 Ruby 和 Rails 知识还不是很丰富,但是在网上搜索了很多内容并尝试了不同的东西之后,我发现更改record.errors.add attribute, :invalid_uk_postcode, options可以record.errors.add attribute, :invalid_uk_postcode, **options修复测试。因此,在最后一个参数中添加 ** 可以修复测试,并且验证似乎可以正常工作。从我到目前为止所读到的内容来看,参数似乎必须更加具体,并且通过添加 ** 使其成为关键字参数(我假设它可以采用任何类型/值),但因为我不是作为 Ruby 和 Rails 方面的专家,这更多的是猜测,而不是正确理解这一点。

有人可以更好地指导吗?通过这种方式修复上述更改似乎可以吗?为什么在最后一个参数中添加 ** 可以修复错误问题?

我不确定自动取款机、选项指的是什么以及我将来会研究的内容,但任何知道并可以回答的人将不胜感激。谢谢

网上搜索了一下错误,可以看到Ruby语法有变化。试图理解这一点。

ruby validation ruby-on-rails ruby-3

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

Ruby on Rails.增加数据库中的整数

我使用Ruby on rails创建了一个网站,并为我的用户提供了一个包含点的数据库.每个用户都有积分,所以我会把它称为@user.points.我可以通过使用以下方式查看点数:

<%= user.points %>
Run Code Online (Sandbox Code Playgroud)

当用户完成某个操作时,我正试图从我的页面增加这些点数.所以我试着这样做:

<% @user.points += 100 %>
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我觉得有一个简单的解决方案,或者我正在监督一些事情.

variables ruby-on-rails

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

`initialize':未初始化的常量ActionCable :: Server :: Configuration :: ApplicationCable

我已经将我的rails项目从4.x升级到5.0.0.beta1以使用actioncable并且我已经按照DHH的例子进行了操作但它无法正常工作.当我启动rails服务器时,它显示错误:

$ rails s
=> Booting Puma
=> Rails 5.0.0.beta1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting

/home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable/server/configuration.rb:15:in `initialize': uninitialized constant ActionCable::Server::Configuration::ApplicationCable (NameError)

from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable/server/base.rb:16:in `new'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable/server/base.rb:16:in `block in <class:Base>'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.beta1/lib/active_support/core_ext/module/attribute_accessors.rb:72:in `block in mattr_reader'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.beta1/lib/active_support/core_ext/module/attribute_accessors.rb:55:in `each'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.beta1/lib/active_support/core_ext/module/attribute_accessors.rb:55:in `mattr_reader'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.beta1/lib/active_support/core_ext/module/attribute_accessors.rb:208:in `mattr_accessor'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable/server/base.rb:16:in `<class:Base>'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable/server/base.rb:12:in `<module:Server>'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable/server/base.rb:7:in `<module:ActionCable>'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable/server/base.rb:6:in `<top (required)>'
from /home/laport/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.beta1/lib/action_cable.rb:43:in `server'
from /home/laport/Téléchargements/Nouveau TP/Module_chat (copie)/config/routes.rb:28:in `block …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-5 actioncable

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

无法找到没有ID的用户,rails 4

我有两种用户类型:艺术家和粉丝.我希望粉丝能够跟随艺术家.到目前为止,它们不起作用,但取消后续工作.我有createdestroy建立以同样的方式,但似乎无法得到它的工作.我在尝试create关系时遇到错误找不到没有ID的艺术家.无论如何,我可以找到艺术家的ID?

代码如下:

relationships_controller.rb

class RelationshipsController < ApplicationController

  before_action :authenticate_fan!

  def create
    @relationship = Relationship.new
    @relationship.fan_id = current_fan.id
    @relationship.artist_id = Artist.find(params[:id]).id #the error
    if @relationship.save
      redirect_to (:back)
    else
      redirect_to root_url
    end
  end

  def destroy
    current_fan.unfollow(Artist.find(params[:id]))
    redirect_to (:back)
  end

end
Run Code Online (Sandbox Code Playgroud)

artists_controller.rb

def show
  @artist = Artist.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)

艺术家/ show.html.erb

<% if fan_signed_in? && current_fan.following?(@artist) %>
  <%= button_to "unfollow", relationship_path, method: :delete, class: "submit-button" %>
<% elsif fan_signed_in? %>
  <%= form_for(Relationship.new, url: relationships_path) do |f| %>
    <%= …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-4

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