小编Tom*_*man的帖子

Rails中的文本列的默认大小(PostgreSQL)

如果我在迁移中有这个:

t.text :body
Run Code Online (Sandbox Code Playgroud)

我可以容纳多少文字:body?(我正在使用PostgreSQL,如果这是相关的)

postgresql orm ruby-on-rails

7
推荐指数
2
解决办法
5642
查看次数

在Rails中消除Markdown?

用户可以在我的应用程序中编辑"文章".每篇文章都在DB中掌握并作为Markdown发送到客户端 - 我使用Javascript将其转换为HTML客户端.

我这样做是为了当用户想要编辑文章时他可以编辑并将Markdown直接发回服务器(因为它已经在页面上).

我的问题是如何消毒我发送给客户端的Markdown - 我可以使用Rails的sanitize帮手吗?

此外,对这种方法的一般想法?我想到的另一个策略是渲染和清理服务器上的HTML,并仅在用户想要编辑文章时将Markdown拉到客户端.

xss markdown sanitization ruby-on-rails

7
推荐指数
1
解决办法
2345
查看次数

将两个命名范围与OR组合(而不是AND)

我想找到所有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,但对于不需要破坏其抽象的解决方案来说,它会很棒.

ruby-on-rails searchlogic

7
推荐指数
2
解决办法
5020
查看次数

以编程方式确定Youtube视频是否已被删除

我从YouTube(以嵌入式播放器的形式)获得Rap Exegesis上的大部分音乐.不幸的是,我正在使用的其中一个视频将被删除(由于版权问题或其他原因),从而打破了我网站上的相应页面.

理想情况下,我会有一个cronjob,可以检查(每晚说)是否有任何视频被删除并通知我.最好的方法是什么?

youtube youtube-api

7
推荐指数
1
解决办法
5942
查看次数

state_machine仅适用于新记录

我似乎无法获得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)

ruby ruby-on-rails state-machine

7
推荐指数
1
解决办法
2710
查看次数

跟踪保留的URL(以启用每个用户的虚荣URL)

在我的说唱歌词解释网站上,每个用户都有一个关联的"收藏夹"页面http://rapgenius.com/USERNAME

因为这些收藏页面占据了根命名空间,所以我必须确保没有人使用我已经用于其他内容的用户名.例如:

  • /songs
  • /lyrics
  • /users
  • /posts

如何在用户创建时查找优先级高于/username路径(位于底部routes.rb)的所有顶级路径,以便阻止用户使用这些保留名称?

ruby-on-rails

7
推荐指数
1
解决办法
294
查看次数

按降序对可枚举进行排序

Enumerable按降序排序的最佳方法是什么?

我一直在做@array.sort.reverse@array.sort_by{|song| song.title }.reverse

我想我可以做类似的事情@array.sort{|a, b| b.title <=> a.title},但我发现这很难阅读和冗长.

ruby enumerable

7
推荐指数
1
解决办法
5161
查看次数

按两个值对数组进行排序

假设我有

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]])

最可读的方法是什么?

ruby

7
推荐指数
2
解决办法
1609
查看次数

单个页面中同一模型的多个表单

在我的说唱歌词解释网站的首页,有一个地方,用户可以尝试解释一个具有挑战性的线:

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)

ruby forms ruby-on-rails

7
推荐指数
3
解决办法
9597
查看次数

在respond_to块的JS部分中返回HTML会在IE中引发错误

这是我的控制器操作中的常见模式:

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抛出这个有趣的小错误消息:

alt text http://dl.dropbox.com/u/2792776/screenshots/Screen%20shot%202010-02-25%20at%205.13.49%20PM.png

当然,我每次都可以设置响应的内容类型(或使用after_filter或者其他),但似乎我正在尝试做一些相对标准的事情,我不想添加额外的样板代码.

我该如何解决这个问题?或者,如果解决问题的唯一方法是更改​​响应的内容类型,那么实现我想要的行为的最佳方式是什么(即,向下发送非AJAX布局的内容以及没有布局的相同内容对于AJAX)而不必处理这些错误?

编辑: 此博客文章有更多信息

ajax internet-explorer content-type ruby-on-rails

7
推荐指数
2
解决办法
2828
查看次数