如果我在迁移中有这个:
t.text :body
Run Code Online (Sandbox Code Playgroud)
我可以容纳多少文字:body?(我正在使用PostgreSQL,如果这是相关的)
用户可以在我的应用程序中编辑"文章".每篇文章都在DB中掌握并作为Markdown发送到客户端 - 我使用Javascript将其转换为HTML客户端.
我这样做是为了当用户想要编辑文章时他可以编辑并将Markdown直接发回服务器(因为它已经在页面上).
我的问题是如何消毒我发送给客户端的Markdown - 我可以使用Rails的sanitize帮手吗?
此外,对这种方法的一般想法?我想到的另一个策略是渲染和清理服务器上的HTML,并仅在用户想要编辑文章时将Markdown拉到客户端.
我想找到所有Annotations身体都是:
最好的方法是什么?
我想尽可能使用SearchLogic,但是SearchLogic允许您执行以下各项操作:
Annotation.body_equals('?')Annotation.body_like('[?]')你总是可以将它们连在一起: Annotation.body_equals('?').body_like('[?]')
我不确定如何将它们结合起来OR.
请注意,如果命名范围与参数相同,OR 则可以将它们组合在一起.我可以这样做:
Annotation.body_equals_or_body_like('?')
Run Code Online (Sandbox Code Playgroud)
但这没有用.
请注意,我没有附加到SearchLogic,但对于不需要破坏其抽象的解决方案来说,它会很棒.
我从YouTube(以嵌入式播放器的形式)获得Rap Exegesis上的大部分音乐.不幸的是,我正在使用的其中一个视频将被删除(由于版权问题或其他原因),从而打破了我网站上的相应页面.
理想情况下,我会有一个cronjob,可以检查(每晚说)是否有任何视频被删除并通知我.最好的方法是什么?
我似乎无法获得state_machinegem(http://github.com/pluginaweek/state_machine/)来处理现有记录(它在新记录上正常工作).
这是我的模特:
class Comment < ActiveRecord::Base
state_machine :state, :initial => :pending do
event :publish do
transition all => :published
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是一个IRB会话,演示了这个问题(我做的ActiveRecord::Base.logger = Logger.new(STDOUT)是让它更容易阅读):
>> c = Comment.new
=> #<Comment id: nil, song_id: nil, author: nil, body: nil, created_at: nil, updated_at: nil, state: "pending">
>> c.state
=> "pending"
>> c.publish
Comment Create (0.6ms) INSERT INTO "comments" ("updated_at", "body", "author", "song_id", "created_at", "state") VALUES('2009-11-02 02:44:37', NULL, NULL, NULL, '2009-11-02 02:44:37', 'published')
=> true
>> …Run Code Online (Sandbox Code Playgroud) 在我的说唱歌词解释网站上,每个用户都有一个关联的"收藏夹"页面http://rapgenius.com/USERNAME
因为这些收藏页面占据了根命名空间,所以我必须确保没有人使用我已经用于其他内容的用户名.例如:
/songs/lyrics/users/posts如何在用户创建时查找优先级高于/username路径(位于底部routes.rb)的所有顶级路径,以便阻止用户使用这些保留名称?
Enumerable按降序排序的最佳方法是什么?
我一直在做@array.sort.reverse或@array.sort_by{|song| song.title }.reverse
我想我可以做类似的事情@array.sort{|a, b| b.title <=> a.title},但我发现这很难阅读和冗长.
假设我有
an_array = [[2, 3], [1, 4], [1, 3], [2, 1], [1, 2]]
Run Code Online (Sandbox Code Playgroud)
我要排序此阵列由每个内阵列的所述第一值,然后由第二(所以排序后的数组应该是这样的:[[1, 2], [1, 3], [1, 4], [2, 1], [2, 3]])
最可读的方法是什么?
在我的说唱歌词解释网站的首页,有一个地方,用户可以尝试解释一个具有挑战性的线:
alt text http://dl.dropbox.com/u/2792776/screenshots/2010-02-06_1620.png
这是我用来生成这个的部分:
<div class="stand_alone annotation" data-id="<%= annotation.id %>">
<%= song_link(annotation.song, :class => :title) %>
<span class="needs_exegesis"><%= annotation.referent.strip.gsub(/\n/, "\n <br />") %></span>
<% form_for Feedback.new(:annotation_id => annotation.id, :created_by_id => current_user.try(:id), :email_address => current_user.try(:email)), :url => feedback_index_path, :live_validations => true do |f| %>
<%= f.hidden_field :annotation_id %>
<%= f.hidden_field :created_by_id %>
<p style="margin-top: 1em">
<%= f.text_area :body, :rows => 4, :style => 'width:96%', :example_text => "Enter your explanation" %>
</p>
<p>
<% if current_user %>
<%= f.hidden_field …Run Code Online (Sandbox Code Playgroud) 这是我的控制器操作中的常见模式:
respond_to do |format|
format.html {}
format.js {
render :layout => false
}
end
Run Code Online (Sandbox Code Playgroud)
即,如果请求是非AJAX,我将在一个全新的页面上以布局发送HTML内容.如果请求是 AJAX,我将发送相同的内容,但没有布局(以便它可以插入现有页面或放入灯箱或其他).
所以我总是在format.js部分中返回HTML ,但Rails将Content-Type响应头设置为text/javascript.这会导致IE抛出这个有趣的小错误消息:
当然,我每次都可以设置响应的内容类型(或使用after_filter或者其他),但似乎我正在尝试做一些相对标准的事情,我不想添加额外的样板代码.
我该如何解决这个问题?或者,如果解决问题的唯一方法是更改响应的内容类型,那么实现我想要的行为的最佳方式是什么(即,向下发送非AJAX布局的内容以及没有布局的相同内容对于AJAX)而不必处理这些错误?
编辑: 此博客文章有更多信息
ruby ×4
ajax ×1
content-type ×1
enumerable ×1
forms ×1
markdown ×1
orm ×1
postgresql ×1
sanitization ×1
searchlogic ×1
xss ×1
youtube ×1
youtube-api ×1