我知道这可能是一个愚蠢的问题,但我不知道如何创建一个接受参数哈希的ruby方法.我的意思是,在Rails中我想使用这样的方法:
login_success :msg => "Success!", :gotourl => user_url
Run Code Online (Sandbox Code Playgroud)
接受这种参数的方法的原型是什么?我怎么读它们?
与此问题类似: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)
我还希望能够自动检查以前选择的项目(如果重新加载此表单).如何将参数加载到这些的默认值?
我在这种情况下发现自己两次:我在我的系统上安装了一个gem并开始在我的Rails项目中使用它.最终我需要对该gem进行一些更改.我该怎么办?
理想情况下,我想查看某个地方的宝石的源代码,比如〜/ third_party/gems,对它进行处理并让我的Rails项目使用它.那可能吗?
在所有情况下,宝石都在github,所以我可能会在github,克隆它,抓住机会并维护我自己的分支.我想我会在我的服务器上直接安装gem分支.那有意义吗?
在我的模型中,我有:
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)
建议?我应该以某种方式在其他地方呈现它吗?或者我如何在模型中渲染以设置内容?谢谢
我正在尝试安装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)
建议?
a = "foobarfoobarhmm"
我希望输出为"fooBARfoobarhmm"
即只有第一次出现的"bar"应该用"BAR"代替.
如何使用逻辑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) 我正在尝试定义一个块,我将用它来传递多个范围的每个方法.我不想在每个范围上重新定义块,而是想创建一个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'
有什么想法在这里发生了什么?
我需要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) 当我尝试捆绑安装时,我收到以下消息:
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?