1

链接到我的应用程序中的帖子时遇到一个小绊脚石。我正在截断帖子的文本并提供“阅读更多”链接。有 2 个区域可以查看帖子,一个供所有人(公共)使用,另一个供管理员用户编辑/删除帖子。

所以在我的公众看来,我正在这样做

<% @toppost.each do |t| %>
    <div class="post-item">
      <h2><%= t.title %></h2>
       <ul id="newsHome">
        <li><%= date_output(t.published_on) %></li>
        <li><%= t.department.name %></li>
        <li>by Admin</li>
       </ul>
       <% if t.comments.length > 350 %>
        <p class="post-description"><%= truncate(t.comments, length: 350).html_safe %>
        <%= link_to '...Read more', t %></p>
        <% else %>
        <p class="post-description"><%= t.comments.html_safe %></p>

       <% end %>
    </div>
   <% end %>

但是,当单击阅读更多时,它会将我带到 url

/posts/:id

这实际上是管理员用户查看帖子的地方,所以此时用户将被重定向回主页,因为帖子控制器有

before_filter :authenticate_user!

例如,公开查看所有帖子的地方是在特定的新闻页面上。

localhost:3000/tynewyddnews
localhost:3000/woodside
localhost:3000/sandpiper
localhost:3000/outreach

我的问题是如何在网站公共部分的位置链接到该帖子。

使用 top_posts 方法的索引操作(方法见下文)

def index 
@title = 'Home'
@toppost = Post.top_posts

结尾

top_posts 方法

def self.top_posts
#Array with each of the 4 departments - first record
top_posts = [
  self.tynewydd_posts.first,
  self.woodside_posts.first,
  self.sandpiper_posts.first,
  self.outreach_posts.first
]
#remove entry if nil
top_posts.delete_if {|x| x==nil}
return top_posts

结尾

控制器

def tynewyddnews
  @title = 'Ty Newydd News'
  tynewyddpost = Post.tynewydd_posts.reverse
  tynewyddpost.pop
  @tynewyddpost = tynewyddpost
  @tynewyddpostlatest = Post.tynewydd_posts.first
end

模型

scope :tynewydd_posts, :include => :department, :conditions => {"departments.name" => "Ty Newydd"}, :order => "posts.published_on DESC"

其他部门还有另外3个范围,都一样寻找条件部门名称

希望我添加了足够的信息,还有什么需要的请询问

编辑

一直在考虑这一点,不确定我是否走在正确的轨道上,但是对于每个帖子,我都需要它链接到公共页面控制器中相应的新闻页面。

tynewyddnews
sandpipernews
outreachnews
Woodsidenews

因此,在我的 link_to 中,我需要根据帖子的类型将路由传递给适当的操作。那么如何给每个帖子一个类型,然后链接到那个?

谢谢

4

1 回答 1

1

哇,好的,我从哪里开始。

例如,您需要一个指向该控制器操作的路由

`get '/tynewyddnews' => 'news#tynewyddnews', :as => 'public_news' # gives you the route public_news_path

在你看来

= link_to 'Read More', public_news_path

所以,你应该这样做。顺便说一句,您也可以使用该.truncate()方法。您将长度作为参数传递,它会...为您添加

于 2013-04-07T15:27:10.420 回答