链接到我的应用中的帖子时遇到一个小绊脚石。我正在截断帖子的文本并提供“阅读更多”链接。有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 %>
然而,当点击阅读更多时,它会将我带到网址
/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中我需要根据帖子的类型将路由传递给相应的动作..那么如何给每个帖子一个类型然后链接到那个?
由于
答案 0 :(得分:1)
您需要一条指向该控制器操作的路线,例如
`get '/tynewyddnews' => 'news#tynewyddnews', :as => 'public_news' # gives you the route public_news_path
在您的视图中
= link_to 'Read More', public_news_path
所以,你应该这样做。顺便说一句,你也可以使用.truncate()
方法。您将长度作为参数传递,并为您添加...