【问题标题】:find_by_tag rendering in partial only仅部分渲染 find_by_tag
【发布时间】:2012-06-20 19:01:24
【问题描述】:

我已经在我的应用程序中实现了一个标记系统,以便帖子可以应用不同的标记。我正在用这样的特定标签渲染帖子

 <% my_posts = post.find_by_tag("sports") %>
   <%= my_posts.each do |post| %>
   <%= post.title %><br />
   <%= post.body %><br />
 <% end %>

唯一的问题是它只会在我的 _post.html.erb 部分或我的 show.html.erb 中呈现

当我尝试创建另一个部分时,例如 _fact.html.erb 它不会呈现

这是它工作的页面的帖子控制器

   def newest
     @posts = Post.paginate(:page => params[:page], :per_page => 10)
     @title = "Newest"
     @vote = Vote.new(params[:vote])

     respond_to do |format|
       format.html
       format.json { render :json => @users }
     end
   end

在最新的视图中,我刚刚做了一个 @posts %>

我想做同样的事情,除了 def Sports 和一个名为 sports.html.erb 的视图,但由于某种原因,当我这样做并使用除 @posts 之外的另一个部分时,它不起作用。我已经在 def sports 中为@facts 添加了一行,所以不是这样,但我不确定问题可能是什么。

仍然是编程新手,因此非常感谢您的帮助,谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 partial-views tagging


    【解决方案1】:

    当你告诉 Rails 渲染一个集合时,它似乎做了一定的魔法,但是,由于自然不信任魔法,我更喜欢指定部分并使用 :collection 选项,正如我在回答这个问题时所描述的那样: How to render collection with template in rails3?

    在你的情况下,假设你在views/things/ 中有一个_fact.html.erb 部分,大概你想做这样的事情:

    <%= render :partial => 'things/fact', :collection => @facts %>
    

    【讨论】:

    • 当我这样做时,我得到一个未定义的局部变量或方法'post'的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    相关资源
    最近更新 更多