我正在使用Ruby on Rails 3.0.9,我想验证一个只能包含字符(不是特殊字符 - 不区分大小写),空格和数字的字符串.
在我的验证码中,我有:
validates :name,
:presence => true,
:format => { :with => regex } # Here I should set the 'regex'
Run Code Online (Sandbox Code Playgroud)
我该如何陈述正则表达式?
我正在使用Ruby 1.9.2和Ruby on Rails v3.2.2 gem.我希望"嵌套"包含模块,因为我使用的是RoR ActiveSupport :: Concern功能,但我怀疑我应该在哪里说明该include
方法.也就是说,我有以下内容:
module MyModuleA
extend ActiveSupport::Concern
# include MyModuleB
included do
# include MyModuleB
end
end
Run Code Online (Sandbox Code Playgroud)
我应该include MyModuleB
在"身体"/"上下文"/"范围"中说明,MyModuleA
或者我应该在included do ... end
块中说明?有什么区别,我应该从中得到什么?
我on Rails的3.0.7使用Ruby,我想生成一个link_to
控制器动作edit
,动态.我必须在部分模板中使用它,但问题是我为不同的模型数据渲染相同的部分模板(也就是说,我传递不同类实例的局部变量).
所以我不能使用路线"神奇的RoR方式"
`edit_<singular_name_of_the_resource>_path(<resource_class_instance>)`.
Run Code Online (Sandbox Code Playgroud)
我想做类似以下的事情:
link_to( @resource_class_instance, :action => 'edit') # This example is wrong, but it suggests the idea
Run Code Online (Sandbox Code Playgroud)
可能吗?如果是这样,我该怎么做?
我在运行Ubuntu 10.04 LTS的远程VPS机器上以生产模式运行Ruby on Rails 3.0.9(在开发模式下我在MAC OS Snow Leopard上使用RoR),我想知道如何管理以下场景.
我使用Apache2和Phusion Passenger,我已经将Virtual Host设置为:
<VirtualHost *:80>
ServerName project_name.com
DocumentRoot /srv/www/project_name.com/public
<Directory /srv/www/project_name.com/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
更多,我使用Paperclip gem,并且,作为很多人在网络上使用它在生产模式下,我在处理(图像)文件时收到以下错误:
Errno::EACCES (Permission denied - /srv/www/project_name.com/public/images/001):
...
Run Code Online (Sandbox Code Playgroud)
我听说为了避免这些错误的解决方案是设置正确的文件夹权限(手动! - 我不知道是否可以自动化"设置"过程......顺便说一下:是否可能?)但是我认为有更好的方法来解决这个问题.如果是这样,我该怎么办?
我正在使用Ruby on Rails v3.0.9,我想在一个句子中"转换"一个字符串数组,包括标点符号.也就是说,如果我有一个如下所示的数组:
["element 1", "element 2", "element 3"]
Run Code Online (Sandbox Code Playgroud)
我想得到\ build:
# Note: I added 'Elements are: ' at the begin, ',' between elements and '.' at
# the end.
"Elements are: element 1, element 2, element 3."
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在使用Ruby on Rails 3.0.10,我想将一些参数传递给默认的渲染方法.也就是说,如果我有一个类似的代码
def show
...
respond_to do |format|
format.html # This, by default, renders the 'show.html.erb' file
end
end
Run Code Online (Sandbox Code Playgroud)
我想传递一些参数,也许就像(注意:以下不起作用)
def show
...
respond_to do |format|
# Here I would like to add some local objects that will be available in the 'show.html.erb' template file
format.html { render ..., :locals => { :content => { :value => 'Sample value' } } }
end
end
Run Code Online (Sandbox Code Playgroud)
所以在show.html.erb
模板中我可以做类似的事情:
<%=
content[:value]
# => 'Sample value'
%>
Run Code Online (Sandbox Code Playgroud)
简而言之,我想以与为与:locals
键相关的部分模板渲染所做的相同方式传递参数值 …
我正在使用Rails 3.1.0,我想belongs_to
只在满足某些条件时"触摸" 关联的父模型.
例如,此时我有:
belongs_to :article,
:touch => true
Run Code Online (Sandbox Code Playgroud)
只有当它是"公共"时,我才会"触摸"父模型.也就是说,Article
该类有一个名为access
(@article.access
=> public
或private
)的属性,我想在"触摸"之前检查这个值:如果这个值不是 public
,那么"触摸"它!
是否可以在belongs_to
关联声明中"直接"进行?如果是这样,怎么样?
我试图理解include
在多个Mixins中使用时的语句行为.也就是说,我有这些陈述:
class Article < ActiveRecord::Base
include DoubleIncludedModule
include AModule
# ...
end
module AModule
include DoubleIncludedModule
# ...
end
module DoubleIncludedModule
# ...
end
Run Code Online (Sandbox Code Playgroud)
课程中会DoubleIncludedModule
包含多少次Article
?也就是说,由于"后续"包含DoubleIncludedModule
(首先在Article
类中,然后在类本身中AModule
包含Article
),将是由Ruby自动处理的"双重包含"问题还是DoubleIncludedModule
(错误地)包含两次?
当然,我想只包含一次该DoubleIncludedModule
模块.我怎样才能以正确的方式实现(可能通过使用一些Ruby on Rails方法)?
我正在使用Ruby v1.9.2和Ruby on Rails v3.2.2 gem.我有以下模块
module MyModule
extend ActiveSupport::Concern
included do
def self.my_method(arg1, arg2)
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
我想为类方法 添加别名my_method
.所以,我说了以下(不工作)代码:
module MyModule
extend ActiveSupport::Concern
included do
def self.my_method(arg1, arg2)
...
end
# Note: the following code doesn't work (it raises "NameError: undefined
# local variable or method `new_name' for #<Class:0x00000101412b00>").
def self.alias_class_method(new_name, old_name)
class << self
alias_method new_name, old_name
end
end
alias_class_method :my_new_method, :my_method
end
end
Run Code Online (Sandbox Code Playgroud)
换句话说,我想在Module
某种程度上扩展这个类,以便添加一个alias_class_method
可用的方法MyModule
.但是,我想让它工作 …
我正在编程Arduino,我正在尝试Serial.print()
十六进制格式的字节"我的方式"(继续阅读更多信息).
也就是说,通过使用以下代码
byte byte1 = 0xA2;
byte byte2 = 0x05;
byte byte3 = 0x00;
Serial.println(byte1, HEX);
Serial.println(byte2, HEX);
Serial.println(byte3, HEX);
Run Code Online (Sandbox Code Playgroud)
我在串行监视器中得到以下输出:
A2
5
0
Run Code Online (Sandbox Code Playgroud)
但是我想输出以下内容:
A2
05
00
Run Code Online (Sandbox Code Playgroud)
在的话,我想打印的"全"的十六进制值包括0
S(05
而不是0
和00
代替0
).
我该怎么做?