我目前将此作为搜索:
<%= form_tag users_path, :controller => 'users', :action => 'townsearch', :method => 'get' do %>
<%= select_tag :county, params[:county] %>
<%= submit_tag 'search'%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我的用户模型中有以下列表:
COUNTY_OPTIONS = [ "Avon", "Bedfordshire", "Berkshire", "Borders", "Buckinghamshire", "Cambridgeshire","Central",
"Cheshire", "Cleveland", "Clwyd", "Cornwall", "County Antrim", "County Armagh", "County Down",
"County Fermanagh", "County Londonderry", "County Tyrone", "Cumbria", "Derbyshire", "Devon",
"Dorset", "Dumfries and Galloway", "Durham", "Dyfed", "East Sussex", "Essex", "Fife", "Gloucestershire",
"Grampian", "Greater Manchester", "Gwent", "Gwynedd County", "Hampshire", "Herefordshire", "Hertfordshire",
"Highlands and Islands", "Humberside", "Isle …
Run Code Online (Sandbox Code Playgroud) 以示例类为例:
# in ./example.rb
class Example
private
attr_accessor :name
end
Run Code Online (Sandbox Code Playgroud)
当我以详细模式运行它时,Ruby会向我发出警告:
$ ruby -W2 ./example.rb
example.rb:3: warning: private attribute?
Run Code Online (Sandbox Code Playgroud)
为什么不推荐这个?
我想对表示数值范围的字符串数组进行排序,如下所示:
b = ["0-5", "100-250", "5-25", "50-100", "250-500", "25-50"]
Run Code Online (Sandbox Code Playgroud)
使用sort
我得到的方法:
b.sort
# => ["0-5", "100-250", "25-50", "250-500", "5-25", "50-100"]
Run Code Online (Sandbox Code Playgroud)
我希望它像这样:
["0-5, "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud) 假设您正在使用不同的arity覆盖子类中的方法:
class A
def foo(arg) # arity is 1
# doing something here
end
end
class B < A
def foo(arg1, arg2) # arity is 2
super(arg1) # <- HERE
end
end
Run Code Online (Sandbox Code Playgroud)
有没有办法super
在这里获得在线的arity ?
(真实的用例:我正在调用super
知道超类不带任何参数.但是,如果超类实现(在gem中)发生变化,我想发出警告.)
谢谢你的帮助!
有没有办法可以将参数传递给中间件的控制器动作调用?
这是控制器代码中的操作
# in my_controller.rb
#
def print_name(name)
render :text => "Hello, #{name}!"
end
Run Code Online (Sandbox Code Playgroud)
这是我的中间件中调用此操作的代码
# in middleware
#
def call(env)
env['action_controller.instance'].class.action(:print_name).call(env)
end
Run Code Online (Sandbox Code Playgroud)
这当然会提高ArgumentError
.
我不知道如何传递一个参数来action
调用.这是来源:
# in action_pack/lib/action_controller/metal.rb
#
def self.action(name, klass = ActionDispatch::Request)
middleware_stack.build(name.to_s) do |env|
new.dispatch(name, klass.new(env))
end
end
Run Code Online (Sandbox Code Playgroud)
如您所见,它从提供的控制器操作返回机架端点.我认为我无法在这里传递论据.
我最终动态更改控制器class_eval
,然后从该代理方法调用控制器方法.
# in middleware
#
def define_proxy_method(klass)
klass.class_eval do
def call_the_real_method
print_name(request.env['fake_attribute'])
end
end
end
def call(env)
define_proxy_method(env['action_controller.instance'].class)
env['fake_attrbute'] = "Yukihiro"
env['action_controller.instance'].class.action(:call_the_real_method).call(env)
end
Run Code Online (Sandbox Code Playgroud)
这看起来很脏,我想知道更好的方法.谢谢.
这是ruby函数:
def long_reference_name
if suite?
"#{recursive_access} #{recursive_view} "
else
""
end + reference_name
end
Run Code Online (Sandbox Code Playgroud)
我不明白其含义是什么:
end + reference_name
假设我已经记录了一个包含许多命令和特殊字符的长宏.赔率是我在某处犯了错误:)如何编辑宏,纠正错误并再次保存?
例如:
我希望复制一行,然后将其中的数字增加一.
这是宏
yyp/\d<C-A>
Run Code Online (Sandbox Code Playgroud)
但它被保存为
yyp/\d^M^A
Run Code Online (Sandbox Code Playgroud)
粘贴寄存器时,我看不到这个特殊字符.当我希望复制寄存器时,我还必须使用'let',因为标准粘贴到屏幕并复制到另一个寄存器不起作用.如何有效地编辑特殊字符的注册?
谢谢
目前我在我的这个映射 ~/.vimrc
noremap <Leader>a :Ack <cword><cr>
Run Code Online (Sandbox Code Playgroud)
这使我能够在光标下搜索一个单词.
我想搜索当前的视觉选择,因为有时单词是不够的.
有没有办法可以发送视觉选择ack.vim
?
我有包含这样的标签数组的记录:
id | title | tags
--------+-----------------------------------------------+----------------------
124009 | bridge photo | {bridge,photo,Colors}
124018 | Zoom 5 | {Recorder,zoom}
123570 | Sint et | {Reiciendis,praesentium}
119479 | Architecto consectetur | {quia}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下SQL查询来按标签获取特定记录('bridge','photo','Colors'):
SELECT "listings".* FROM "listings" WHERE (tags @> ARRAY['bridge', 'photo', 'Colors']::varchar[]) ORDER BY "listings"."id" ASC LIMIT $1 [["LIMIT", 1]]
Run Code Online (Sandbox Code Playgroud)
这将返回此表中的第一条记录.
这样做的问题是,我有混合型的情况下,我想,如果我搜索到返回相同的结果:bridge
,photo
,colors
.基本上我需要使这个搜索不区分大小写,但无法找到与Postgres这样做的方法.
这是我尝试过的SQL查询,它会抛出错误:
SELECT "listings".* FROM "listings" WHERE (LOWER(tags) @> ARRAY['bridge', 'photo', 'colors']::varchar[]) ORDER BY "listings"."id" ASC LIMIT $1
Run Code Online (Sandbox Code Playgroud)
这是错误:
PG :: UndefinedFunction:错误:函数lower(字符变化[])不存在
提示:没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换.
我需要有关如何获得某个数字的第n个根的帮助.
用户输入他想要root的数字n和数字.我需要在没有cmath lib和分而治之的方法下解决这个问题.
这是我的代码还没有工作:
#include<iostream>
using namespace std;
float pow(float a,float c){
if (a == 0)
return 0;
else if(a == 1)
return 1;
else{
float p = pow(a,(c/2));
if(c%2)
return p*p*a;
else
return p*p;
}
}
int main(){
float a,b;
float c;
cout << "Enter positive number:(base)" << endl;
do{
cin >> a;
}while (a < 0);
cout << "Enter number: (root)" << endl;
cin >> b;
c = 1/b;
cout << "Result:"<<pow(a,c) << endl;
system("pause");
return 0;
} …
Run Code Online (Sandbox Code Playgroud) 我知道如何实现这一目标,但它似乎不是红宝石的做法.
我有一周的天数:
DAYS = {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
4 => "Thursday",
5 => "Friday",
6 => "Saturday",
7 => "Sunday"}
Run Code Online (Sandbox Code Playgroud)
(可能有一些铁路助手为此,但我已经用我能想到的最快的方式实现了它)
现在我想创建一个数组,其中第一个元素是今天,其他日子应该保持有序.
这是这个数组
def day_keys
# proper sorting of days, start with today and then continue
day_array = (1..7).to_a
loop do
break if day_array.first == Time.now.wday
day_array.rotate!
end
day_array
end
Run Code Online (Sandbox Code Playgroud)
今天是星期五,所以它会回来[5,6,7,1,2,3,4]
.在此之后,我使用DAYS
散列中的键映射此数组中的值以查找日期名称.
解决方案对我来说似乎很粗糙,所以我想听听一些关于如何实现这一点的想法.我花了一些时间看Array#cycle
和Enumerable#inject
,但似乎没有适合我的需要.