小编Mar*_*arc的帖子

渲染:验证后新的没有到达正确的位置

我有一个'new'表单,可以在post模型中验证.当验证器启动时,它会呈现错误.

新的帖子页面路径位于'/ posts/new'

在验证时,新的帖子页面路径位于'/ posts'..我需要它回到'/ posts/new'.

这是我的控制器:

def create
 @post = current_user.posts.build(params[:post])
 if @post.save
   redirect_to public_post_page_path(@post.public_url)
 else 
   render :action => :new
 end
end
Run Code Online (Sandbox Code Playgroud)

我觉得这可能与我的表格有关.所以这是formtastic的第一行:

<%= semantic_form_for [:student, post], :html => {:id => "post_form"} do |form| %>
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3

17
推荐指数
1
解决办法
6898
查看次数

与同一模型的多个has_many关系

我有一个可以创建帖子的模型用户

User
 has_many :posts
Post
 belongs_to :user
Run Code Online (Sandbox Code Playgroud)

但是,我还想让用户将帖子保存为书签.所以我添加了以下内容:

Bookmark
 belongs_to :post
 belongs_to :user
User
 has_many :posts
 has_many :posts, :through => :bookmarks
Post
 belongs_to :user
 has_many :posts, :through => :bookmarks
Run Code Online (Sandbox Code Playgroud)

这可能不对,因为当我执行@ user.posts时,它现在变得模棱两可.这是指用户撰写的帖子还是用户收藏的帖子?

你是如何解决这个问题的?

activerecord ruby-on-rails

12
推荐指数
1
解决办法
1万
查看次数

查找不存在连接的记录

我有一个范围来限制所有questions用户是否投票.在模型中:

scope :answered_by, lambda {|u| joins(:votes).where("votes.user_id = ?", u.id) }
scope :unanswered_by, lambda {|u| joins(:votes).where("votes.user_id != ?", u.id) }
Run Code Online (Sandbox Code Playgroud)

在控制器中,我这样称呼它们:

@answered = Question.answered_by(current_user)
@unanswered = Question.unanswered_by(current_user)
Run Code Online (Sandbox Code Playgroud)

unanswered_by范围不正确.我基本上想找到没有投票的地方.相反,它试图寻找是否存在与当前用户不相等的投票.任何想法如何返回不存在连接的所有记录?

sql postgresql ruby-on-rails

9
推荐指数
1
解决办法
9881
查看次数

查找嵌套开始和结束标记的最佳方法

我正在使用ROR制作基本讨论板.当用户发布对消息的响应时,输入文本区域使用标记预先填充引号中的消息:[QUOTE].因此格式为:

[QUOTE]引用的消息在这里[/ QUOTE]

目前,我有一个简单的解决方案,只要[QUOTE]或[/ QUOTE]仍然存在,就可以使用message.sub('[QUOTE]','html在这里')用HTML替换[QUOTE]和[/ QUOTE] .当我回复引用的消息时,我将HTML转换回[QUOTE]标签,以确保预先填充的输入textarea中没有HTML.因此,引用的引用将如下所示:

[QUOTE] [QUOTE]引用此处留言[/ QUOTE] [/ QUOTE]

这是问题所在.如果我再次运行当前的方法,我将获得重复的HTML字段,如:

<div class='test'><div class='test'>quoted message goes here</div></div>
Run Code Online (Sandbox Code Playgroud)

相反,我希望能够有一个看起来像这样的解决方案:

<div class='test1'><div class='test2'>quoted message goes here</div></div>
Run Code Online (Sandbox Code Playgroud)

等等......关于循环这个的最佳方法的任何建议?

ruby

3
推荐指数
1
解决办法
695
查看次数

使用Nokogiri错误缓存Youtube API XML响应 - 编组错误?

我想尽量减少对Youtube API的调用,因为这些数据不会经常刷新.当我尝试缓存此时:

Rails.cache.fetch("youtube-#{@yt_name}", :expires_in => 1.day) do
  @youtube_doc = Nokogiri::XML(open("https://gdata.youtube.com/feeds/api/users/#{@yt_name}/uploads"))
end
Run Code Online (Sandbox Code Playgroud)

我在heroku中收到错误:

Marshalling error for key 'youtube-NAME': no marshal_dump is defined for class Nokogiri::XML::NodeSet 
You are trying to cache a Ruby object which cannot be serialized to memcached.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

xml caching ruby-on-rails youtube-api nokogiri

3
推荐指数
1
解决办法
841
查看次数

查询Activerecord HABTM关系以包含数组的所有元素

我有ForumForumTagHABTM的关系.我还有一个名为变量的数组@tags.此数组包含一些ForumTags的名称.我希望能够查询并查找具有该数组所有值的所有论坛.我目前有:

@forums = Forum.joines(:forum_tags).where(:forum_tags => {:name => @tags}).includes(:forum_tags).all

但是,这将返回阵列中至少具有一个值的所有论坛.

ruby ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
1504
查看次数