标签: ruby

创建一个接受参数哈希的ruby方法

我知道这可能是一个愚蠢的问题,但我不知道如何创建一个接受参数哈希的ruby方法.我的意思是,在Rails中我想使用这样的方法:

login_success :msg => "Success!", :gotourl => user_url
Run Code Online (Sandbox Code Playgroud)

接受这种参数的方法的原型是什么?我怎么读它们?

ruby

58
推荐指数
4
解决办法
4万
查看次数

Rails上的单选按钮

与此问题类似:Rails上的复选框

在Ruby on Rails中制作与某个问题相关的单选按钮的正确方法是什么?目前我有:

<div class="form_row">
    <label for="theme">Theme:</label>
    <br><%= radio_button_tag 'theme', 'plain', true %> Plain
    <br><%= radio_button_tag 'theme', 'desert' %> Desert
    <br><%= radio_button_tag 'theme', 'green' %> Green
    <br><%= radio_button_tag 'theme', 'corporate' %> Corporate
    <br><%= radio_button_tag 'theme', 'funky' %> Funky
</div>
Run Code Online (Sandbox Code Playgroud)

我还希望能够自动检查以前选择的项目(如果重新加载此表单).如何将参数加载到这些的默认值?

ruby webforms ruby-on-rails radio-button

58
推荐指数
3
解决办法
7万
查看次数

为Rails项目分配一个gem

我在这种情况下发现自己两次:我在我的系统上安装了一个gem并开始在我的Rails项目中使用它.最终我需要对该gem进行一些更改.我该怎么办?

理想情况下,我想查看某个地方的宝石的源代码,比如〜/ third_party/gems,对它进行处理并让我的Rails项目使用它.那可能吗?

在所有情况下,宝石都在github,所以我可能会在github,克隆它,抓住机会并维护我自己的分支.我想我会在我的服务器上直接安装gem分支.那有意义吗?

ruby gem fork ruby-on-rails

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

Rails,如何在模型中渲染视图/部分

在我的模型中,我有:

after_create :push_create
Run Code Online (Sandbox Code Playgroud)

我push_create我需要渲染一个视图.我试着这样做:

  def push_event(event_type)
    X["XXXXX-#{Rails.env}"].trigger(event_type, 
      {
        :content => render( :partial =>"feeds/feed_item", :locals => { :feed_item => self })
      }
    )
  end
Run Code Online (Sandbox Code Playgroud)

这会激怒rails,因为它不像我在模型中渲染视图但我需要它.

错误:

NoMethodError (undefined method `render' for #<WallFeed:0x1039be070>):
Run Code Online (Sandbox Code Playgroud)

建议?我应该以某种方式在其他地方呈现它吗?或者我如何在模型中渲染以设置内容?谢谢

ruby ruby-on-rails ruby-on-rails-3

58
推荐指数
5
解决办法
4万
查看次数

Vim Command-T插件错误:无法加载C扩展

我正在尝试安装Command-T插件.

我按照本评论中的说明编译了vim:使用ruby支持安装vim(+ ruby​​)

所以现在有+ ruby​​标志,但是当我尝试使用插件时,我得到了这个错误:

command-t.vim could not load the C extension
Please see INSTALLATION and TROUBLE-SHOOTING in the help              
For more information type:    :help command-t
Run Code Online (Sandbox Code Playgroud)

我的系统上有红宝石:

> ruby -v
> ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
Run Code Online (Sandbox Code Playgroud)

建议?

ruby vim plugins

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

Ruby - 用另一个字符串替换第一次出现的子字符串

a = "foobarfoobarhmm"

我希望输出为"fooBARfoobarhmm"

即只有第一次出现的"bar"应该用"BAR"代替.

ruby string replace

58
推荐指数
3
解决办法
5万
查看次数

ActiveRecord Arel OR条件

如何使用逻辑OR而不是AND组合2个不同的条件?

注意:作为轨道范围生成2个条件,并且不能轻易地将其更改为where("x or y")直接类似的条件.

简单的例子:

admins = User.where(:kind => :admin)
authors = User.where(:kind => :author)
Run Code Online (Sandbox Code Playgroud)

它很容易应用和条件(对于这个特殊情况是没有意义的):

(admins.merge authors).to_sql
#=> select ... from ... where kind = 'admin' AND kind = 'author'
Run Code Online (Sandbox Code Playgroud)

但是,如何生成具有2种不同Arel关系的以下查询?

#=> select ... from ... where kind = 'admin' OR kind = 'author'
Run Code Online (Sandbox Code Playgroud)

似乎(根据Arel自述文件):

OR运算符尚不支持

但是我希望它不适用于此并期望写出如下内容:

(admins.or authors).to_sql
Run Code Online (Sandbox Code Playgroud)

ruby sql activerecord ruby-on-rails arel

58
推荐指数
4
解决办法
3万
查看次数

将lambda作为一个块传递

我正在尝试定义一个块,我将用它来传递多个范围的每个方法.我不想在每个范围上重新定义块,而是想创建一个lamba,并传递lambda:

count = 0
procedure = lambda {|v| map[count+=1]=v}
("A".."K").each procedure
("M".."N").each procedure
("P".."Z").each procedure
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

ArgumentError: wrong number of arguments(1 for 0)
    from code.rb:23:in `each'

有什么想法在这里发生了什么?

ruby lambda

58
推荐指数
3
解决办法
2万
查看次数

在Ruby 1.9.3中安装debugger-linecache时出错

我需要debugger-linecache一个项目的1.0.1版本,我在尝试安装时遇到以下错误.

trunk ?  gem install debugger-linecache -v '1.0.1'
Building native extensions.  This could take a while...
ERROR:  Error installing debugger-linecache:
    ERROR: Failed to build gem native extension.

        /Users/jordanscales/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for vm_core.h... no
checking for vm_core.h... no
Makefile creation failed
**************************************************************************
No source for ruby-1.9.3-p194 provided with debugger-ruby_core_source gem.
**************************************************************************
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may …
Run Code Online (Sandbox Code Playgroud)

ruby gem rubygems ruby-1.9.3

58
推荐指数
4
解决办法
2万
查看次数

您的Ruby版本是2.0.0,但您的Gemfile指定为2.1.0

当我尝试捆绑安装时,我收到以下消息:

Your Ruby version is 2.0.0, but your Gemfile specified 2.1.0
Run Code Online (Sandbox Code Playgroud)

在我的Gemfile中,我有以下内容:

ruby '2.1.0'
Run Code Online (Sandbox Code Playgroud)

当我ruby -v在控制台中运行时,我得到:

ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0]
Run Code Online (Sandbox Code Playgroud)

Ruby 2.1.0p0是什么意思?我的Gemfile应该有什么版本,为什么错误告诉我我有Ruby版本2.0.0?

ruby gemfile

58
推荐指数
5
解决办法
7万
查看次数