小编Sha*_*med的帖子

为什么不遵循Array#keep_if的Ruby约定?

使用bang(!)有一个方法命名的Ruby约定.惯例是如果方法改变self,我们用bang让别人知道自我修改的行为.

例如Array#select,不会改变self,但Array#select!确实如此.但Array#keep_if确实会改变自我.什么都没有Array#keep_if!.

不遵守惯例的原因是什么?

ruby

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

Rails:Grape API - NameError:未初始化的常量API

我目前正在学习如何使用Rails.我按照本网站上的教程:http: //funonrails.com/2014/03/building-restful-api-using-grape-in​​-rails/

我把我的文件放在lib文件夹中,但是在app文件夹中并按照教程中的说明编辑了application.rb.其余代码与教程中的相同.

我完成了它直到自定义错误格式化程序,但如果我启动Rails服务器测试一切我得到以下错误:

                Exiting
E:/Users/Robert/Documents/Rubymine Projects/WarframeApi/config/routes.rb:3:in `block in <top (required)>': uninitialized constant API (NameError)
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8/lib/action_dispatch/routing/route_set.rb:337:in `instance_exec'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8/lib/action_dispatch/routing/route_set.rb:337:in `eval_block'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8/lib/action_dispatch/routing/route_set.rb:315:in `draw'
    from E:/Users/Robert/Documents/Rubymine Projects/WarframeApi/config/routes.rb:1:in `<top (required)>'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/application/routes_reloader.rb:40:in `each'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/application/routes_reloader.rb:40:in `load_paths'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/application/routes_reloader.rb:16:in `reload!'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/application/routes_reloader.rb:26:in `block in updater'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/file_update_checker.rb:75:in `call'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/file_update_checker.rb:75:in `execute'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/application/routes_reloader.rb:27:in `updater'
    from C:in `execute_if_updated'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/application/finisher.rb:71:in `block in <module:Finisher>'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/initializable.rb:30:in `instance_exec'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/initializable.rb:30:in `run'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.1.8/lib/rails/initializable.rb:55:in `block in run_initializers'
    from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:226:in …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

Rails 4:find_or_initialize_by 和条件默认值

我有一个类可以建立这样的关系:

def assign_vars
  template_variables.each do |master|
    @document.template_variables.find_or_initialize_by(
      name: master.name, tag: master.tag, text: master.default_value)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这样如果它已经存在就会被发现,或者如果它不存在就会被构建。我的问题是text: master.default_value. 我想仅在我们建立新关系时才设置它,而不是find_or_initialize_by. 类似的东西text: text || master.default_value。我怎么能在那个循环中写呢?

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

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

Rails:如何检查是否提供了content_for?

在我的RoR 4.2应用程序中,所有页面都提供:标题,用于HTML标头<TITLE>标记.动态页面还提供:page_heading内容,它显示在我的应用程序页眉布局中.

为了保持一致的外观,我希望标题也显示在静态页面的应用程序页眉布局中,即:不提供page_heading时.

这是展示视图的开始代码:

<% provide(:title, 'Managing business rules') %>
<% content_for :page_heading do %>
<h1>Business Rule: <%= @business_rule.name %></h1>
<% end %>
----
Run Code Online (Sandbox Code Playgroud)

以下是_header.html.erb应用程序布局中嵌入的代码:

<h1> <%= yield(:page_heading.empty? ? :title : :page_heading) %> </h1>
Run Code Online (Sandbox Code Playgroud)

因此,对于静态页面:标题显示在IceWeasel标题栏中,并且在应用程序标题中也是如此,这是正确的.

但是,对于动态页面:标题显示在IceWeasel标题栏中,也显示在应用程序标题中,其中:page_heading是预期的.

符号上的条件:page_heading.empty?不起作用.

如何正确指定此条件并将预期符号提供给yield函数?

谢谢.

ruby ruby-on-rails

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

标签 统计

ruby ×4

ruby-on-rails ×3

ruby-on-rails-4 ×1