有没有办法访问嵌套的form_bulder.object?
## controller
@project = Project.new
@project.tasks.build
form_for(@project) do |f|
f.object.nil? ## returns false
fields_for :tasks do |builder|
builder.object.nil? ## returns true
end
end
Run Code Online (Sandbox Code Playgroud) 当我在Eclipse中编写另一个开关时,我再次遇到了一个相当奇怪的(至少对我来说)默认缩进,它适用于'switch'语句:
switch (i) {
case 1:
...
case n:
...
}
Run Code Online (Sandbox Code Playgroud)
我倾向于采用另一种方式:
switch (i) {
case 1:
...
case n:
...
}
Run Code Online (Sandbox Code Playgroud)
哪种方式更具可读性和赏心悦目?我仍然没有百分之百确定什么对我最好,所以我想坚持最适合其他人阅读我的代码.
顺便说一下,如果这个问题过于主观,你可以自由地结束这个问题.:)
我已经和Rails一起工作了一段时间,我发现自己经常做的一件事就是在显示之前检查我的视图代码中是否有某些属性或对象为nil.我开始怀疑这是否总是最好的主意.
到目前为止,我的理由是,由于我的应用程序依赖于用户输入,因此可能会发生意外情况.如果我从编程中学到一件事,那就是用户输入程序员没想到的东西是运行时错误的最大来源之一.通过检查零值,我希望回避这一点并让我的观点优雅地处理问题.
虽然我通常由于各种原因在我的模型或控制器代码中有类似的无效或无效的值检查.我不会在最严格的意义上称它为代码重复,但它似乎并不是很干.如果我已经在我的控制器中检查了nil对象,那么我的视图是否只是假设对象真的不是零?对于可以显示为零的属性,每次检查都是有意义的,但对于对象本身,我不确定什么是最佳实践.
这是我所说的简化但典型的例子:
控制器代码
def show
@item = Item.find_by_id(params[:id])
@folders = Folder.find(:all, :order => 'display_order')
if @item == nil or @item.folder == nil
redirect_to(root_url) and return
end
end
Run Code Online (Sandbox Code Playgroud)
查看代码
<% if @item != nil %>
display the item's attributes here
<% if @item.folder != nil %>
<%= link_to @item.folder.name, folder_path(@item.folder) %>
<% end %>
<% else %>
Oops! Looks like something went horribly wrong!
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是个好主意还是只是愚蠢?
$:/Users/dev/.rvm/gems/ruby-1.9.2-head@rails3/gems/sqlite3-ruby-1.3.1/lib/sqlite3/sqlite3_native.bundle: [BUG] Segmentation fault ruby 1.8.7( 2009-06-12 patchlevel 174)[universal-darwin10.0]
Abort trap
Run Code Online (Sandbox Code Playgroud)
似乎ruby不是正确的版本(1.8.7)但是:
$: ruby - v
$: ruby 1.9.2dev (2010-07-15 revision 28653) [x86_64-darwin10.4.0]
$: gem list
*** LOCAL GEMS ***
abstract (1.0.0)
actionmailer (3.0.0.beta4, 3.0.0.beta3)
actionpack (3.0.0.beta4, 3.0.0.beta3)
activemodel (3.0.0.beta4, 3.0.0.beta3)
activerecord (3.0.0.beta4, 3.0.0.beta3)
activeresource (3.0.0.beta4, 3.0.0.beta3)
activesupport (3.0.0.beta4, 3.0.0.beta3)
arel (0.4.0, 0.3.3)
builder (2.1.2)
bundler (0.9.26)
erubis (2.6.6)
i18n (0.4.1, 0.3.7)
mail (2.2.5)
memcache-client (1.8.5)
mime-types (1.16)
polyglot (0.3.1)
rack (1.1.0)
rack-mount (0.6.9)
rack-test (0.5.4)
rails (3.0.0.beta4, 3.0.0.beta3)
railties …Run Code Online (Sandbox Code Playgroud) 我在使用rails设置启用pubsub的订阅者应用程序时遇到问题.我目前订阅了open hub pubsubhubbub.appspot.com,并且正在接收ping应用程序的端点.(截至目前,我已创建了一个计数器,每当端点被ping时,该计数器都会递增).但我无法理解如何从POST中提取原始POST正文内容.我是pubsub的新手,我很想尝试它.我发现了这篇博文,但它不是特定于语言的.
来源:Joseph Smarr:实施PubSubHubbub订阅者支持:分步指南.http://josephsmarr.com/2010/03/01/implementing-pubsubhubbub-subscriber-support-a-step-by-step-guide/
现在,每当您订阅的博客都有新内容时,您就已经准备好从以太网中获得付费的神奇接收!您将收到对指定回调URL的入站请求,而不会添加任何其他查询参数(即您将知道它是ping而不是验证,因为不会包含任何hub.mode参数).相反,订阅源的新条目将直接包含在请求的POST主体中,请求Content-Type of application/atom + xml for ATOM feed和application/rss + xml for RSS feeds.根据您选择的编程语言,您需要弄清楚如何提取原始POST正文内容.例如,在PHP中,您将打开特殊文件名php:// input来读取它.
任何帮助将不胜感激.
我有一个带有JAXB注释类的包和一个抽象超类.我想在Web服务接口中使用这个超类,所以我可以将任何子类作为参数传递.当我这样做时,会抛出异常:
javax.xml.ws.WebServiceException: javax.xml.bind.UnmarshalException
- with linked exception:
[javax.xml.bind.UnmarshalException: Unable to create an instance of xxx.yyy.ZZZ
- with linked exception:
[java.lang.InstantiationException]]
Run Code Online (Sandbox Code Playgroud)
可以手动编组/取消编组并将参数作为字符串传递,但我想避免使用它.有什么想法怎么做?
我很好奇用jquery加载rails部分的最佳方法.到目前为止,我尝试了一个不起作用的解决方
$('#imagecontent').load('/newsletters/_image_gallery.html.erb', function() {
alert('Load was performed.');
});
Run Code Online (Sandbox Code Playgroud)
是否为此构建单独的操作和/或控制器并设置路径是最佳解决方案?我问,因为使第一个解决方案工作似乎更容易,也许不那么安静.
谢谢.
我require 'digest/sha1'用来加密我的密码并保存到数据库中.在登录期间,我通过匹配保存在数据库中的加密密码进行身份验证,并再次加密,使用输入密码字段.截至目前一切正常,但现在我想做'忘记密码'功能.为此,我需要解密保存在数据库中的密码以找到原始密码.如何解密使用digest/sha1?或者有没有人知道任何支持加密和解密的算法?
我在rails上使用ruby,所以我需要Ruby方法来完成它.
使用Rails,如果我有一个带有HTML内容的变量,我该如何输出它,在我的视图文件中未编码?
这段代码,例如:
<% my_variable = "<b>Some Bolded Text</b>" %>
<%= my_variable %>
Run Code Online (Sandbox Code Playgroud)
输出:
<b>Some Bolded Text</b>
Run Code Online (Sandbox Code Playgroud) 我有一个对象,球,属于一个女孩,可以有很多球.一切都有效,但如果我尝试通过以下方式打印出女孩的名字:
@balls.each do |b|
b.girl.name
end
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"undefined method `name' for nil:NilClass"
Run Code Online (Sandbox Code Playgroud)
这让我很困惑.如果我说b.girl.class,我把它作为Girl的一个实例,就好了.也就是说,它不是"NillClass".
不仅如此,如果我只是尝试任何球,并说
@ball.girl.name
Run Code Online (Sandbox Code Playgroud)
我很好.
那些让我搞砸的球的集合是什么?
编辑:
具体来说,这在我看来正在发生.我现在正在测试它是否也发生在控制器中.
我有一个书籍模型,其日期类型列名为publish_date.根据我的观点,我正在翻阅书籍,我想按年份对书籍进行分组,这样我每年都会有一个标题,而那一年出版的书籍将列在年度标题下面.
因此,从2010年开始,将列出2010年出版的所有书籍,然后列出2009年出版的所有书籍的另一个标题"2009",等等.
<% @all_books.each do |book| %>
<%=link_to book.title + ", (PDF, " + get_file_size(book.size) + ")" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
通过book.publish_date.strftime("%Y"),我能够得到年份,但我不知道如何按年份对条目进行分组.任何有关这方面的帮助将不胜感激.
当我在视图组中滑动时,我正在改变视图组中的子视图(一种覆盖流效果).我正在matrix.setPolyToPoly用于转型.这些观点具有严格需要抗锯齿的边界.
到目前为止,我已尝试使用
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG));
Run Code Online (Sandbox Code Playgroud)
在我的孩子们onDraw,但它似乎没有改变任何东西.此外,我知道BitmapDrawable.setAntiAlias(true),但我的孩子不是drawables,但内部视图的完整视图组,所以我不能使用它.
ruby ×5
android ×1
antialiasing ×1
belongs-to ×1
encryption ×1
formbuilder ×1
indentation ×1
java ×1
jaxb ×1
jquery ×1
load ×1
model ×1
partial ×1
rubygems ×1
subscribe ×1
superclass ×1
transform ×1
views ×1
web-services ×1
websub ×1