我在构建build.xml时遇到了这个问题.
BUILD FAILED
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2786)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)
at org.codehaus.cargo.module.DefaultJarArchive.<init>(DefaultJarArchive.
java:75)
at org.codehaus.cargo.module.DefaultJarArchive.<init>(DefaultJarArchive.
java:56)
at org.codehaus.cargo.module.webapp.DefaultWarArchive.<init>(DefaultWarA
rchive.java:69)
at org.apache.cactus.integration.ant.CactifyWarTask.addJarWithClass(Cact
ifyWarTask.java:652)
at org.apache.cactus.integration.ant.CactifyWarTask.addCactusJars(Cactif
yWarTask.java:627)
at org.apache.cactus.integration.ant.CactifyWarTask.execute(CactifyWarTa
sk.java:519)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at …Run Code Online (Sandbox Code Playgroud) 我有一个Rails应用程序,允许用户通过填写一个扩展的表单来构建数据库查询.我想知道在Rails中检查表单参数的最佳实践.以前,我有我的results方法(表单提交的方法)执行以下操作:
if params[:name] && !params[:name].blank?
@name = params[:name]
else
flash[:error] = 'You must give a name'
redirect_to :action => 'index'
return
end
Run Code Online (Sandbox Code Playgroud)
但对于几个表格领域,每个人都看到这个重复,这很令人厌烦.我不能只是将它们全部放在某个循环中以检查每个字段,因为字段设置不同:
params[:name]params[:image][:font_size]等等.这也是重复的,因为我flash[:error]为每个缺失/无效参数设置,并为每个参数重定向到相同的URL.我切换到使用一个before_filter检查所有必要的表单参数,只有一切都没问题才返回true.然后我的results方法继续,变量只是被分配为flat-out,不涉及检查:
@name = params[:name]
Run Code Online (Sandbox Code Playgroud)
在我的validate_form方法中,我有以下代码部分:
if (
params[:analysis_type][:to_s] == 'development' ||
params[:results_to_generate].include?('graph')
)
{:graph_type => :to_s, :graph_width => :to_s,
:theme => :to_s}.each do |key, sub_key|
unless params[key] && params[key][sub_key]
flash[:error] = "Cannot leave '#{Inflector.humanize(key)}' blank"
redirect_to(url)
return false
end
end
end
Run Code Online (Sandbox Code Playgroud)
我只是想知道我是否会以最好的方式解决这个问题,或者在参数验证方面我是否遗漏了一些明显的东西.我担心这仍然不是最有效的技术,因为我有几个块,我分配一个值 …
我试着关注http://api.rubyonrails.org/classes/ActiveModel/Validator.html,但我应该把它放在哪里
class MyValidator < ActiveModel::Validator
def validate(record)
if some_complex_logic
record.errors[:base] = "This record is invalid"
end
end
private
def some_complex_logic
# ...
end
end
Run Code Online (Sandbox Code Playgroud) 假设我有一个搜索表单,我想验证关键字的长度.我希望表单突出显示无效字段(如模型表单).我到处寻找,似乎无法找到有关在Rails 3中验证非模型支持的表单的任何有用信息.我已经尝试了可验证的 gem,但这似乎不适用于Rails 3:
undefined method `model_name' for Login:Class.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如何为所有RoR模型将include_root_in_json设置为false?
我试图在application.rb中设置ActiveModel :: Base.include_root_in_json = false,但它没有任何效果.
这个问题已经被问到,但解决方案还不清楚.
我使用乔什布什的MaskedInput插件为jQuery
我想要实现的是:
例如:带有面罩的电话输入
$("#txtPhone").mask("(99)9999-9999");
Run Code Online (Sandbox Code Playgroud)
等于:(00)9398-8373
我希望它提交:0093988373
------是否可以在提交时删除.mask但保留值?
这一直困扰着我.为什么人们说在rspec中进行单元测试而在黄瓜中进行整合测试?我不是在问为什么这些测试是必要的 - 我知道集成和单元测试之间的区别.我只是不明白为什么,鉴于黄瓜完全可定制的语法,它不用于单元测试?
在我看来,为黄瓜和rspec编写相同数量的代码,唯一的区别是,对于黄瓜,您将测试逻辑与测试编写分开.
我正在使用Rails 2.3.8.我的代码:
<%= f.radio_button :status, "draft" %>
<%= f.label :status, "Draft" %>
<%= f.radio_button :status, "published" %>
<%= f.label :status, "Published" %>
Run Code Online (Sandbox Code Playgroud)
输出:
<input id="shop_status_draft" name="shop[status]" type="radio" value="draft" />
<label for="shop_status">Draft</label>
<input checked="checked" id="shop_status_published" name="shop[status]" type="radio" value="published" />
<label for="shop_status">Published</label>
Run Code Online (Sandbox Code Playgroud)
显然,label没有正确地关联我的单选按钮.我想label和单选按钮一样id.我怎么能纠正这个?
谢谢.
所以..
<%= submit_tag 'Save', :name => 'save' %>
<%= submit_tag 'Save to Library', :name => 'library' %>
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中:
with_action do |a|
a.save do
end
a.library do
end
end
Run Code Online (Sandbox Code Playgroud)
问题是只有一个动作被调用...对于两个submit_tags都是同一个...任何想法为什么?
或者我如何获得两个按钮将表单提交给两种不同的方法?
在Java中,从两个String Arrays返回公共元素的最有效方法是什么?我可以用一对for循环来做,但这似乎不是非常有效.根据我对类似SO问题的回顾,我能想出的最好的是转换为a List然后应用:retainAll
List<String> compareList = Arrays.asList(strArr1);
List<String> baseList = Arrays.asList(strArr2);
baseList.retainAll(compareList);
Run Code Online (Sandbox Code Playgroud) forms ×4
ruby ×4
validation ×3
activemodel ×2
java ×2
ant ×1
arrays ×1
build ×1
compare ×1
cucumber ×1
form-submit ×1
jquery ×1
json ×1
mask ×1
maskedinput ×1
plugins ×1
unit-testing ×1