Ruby on rails 将最新发布显示为Rails根页面
我有一个简单的Rails博客应用程序,目前我在routes文件中将欢迎页面设置为我的应用程序主页Ruby on rails 将最新发布显示为Rails根页面,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个简单的Rails博客应用程序,目前我在routes文件中将欢迎页面设置为我的应用程序主页 root 'welcome#show' 我的PostsController中也有花园综艺节目和索引方法: 我真正想做的是将我的根/主页设置为最新/最近/id最高的帖子 例如,如果我的上一篇文章是posts/57,这将是主页 要澄清的是,我不希望最后一篇文章的内容出现在头版。。。我真的希望最新的帖子成为头版。如果ID57是最后一篇文章,url将读取post/57。使用重定向到 在app/cont
root 'welcome#show'
我的PostsController中也有花园综艺节目和索引方法:
我真正想做的是将我的根/主页设置为最新/最近/id最高的帖子
例如,如果我的上一篇文章是posts/57,这将是主页
要澄清的是,我不希望最后一篇文章的内容出现在头版。。。我真的希望最新的帖子成为头版。如果ID57是最后一篇文章,url将读取post/57。使用重定向到
在app/controllers/welcome_controller.rb中:
这会将用户重定向到最新的帖子页面。请注意,这将导致对web服务器的两个请求:第一个是welcomeshow,第二个是postsshow
使用分部词
创建app/views/posts/_post.html.erb,其中应包含帖子的html。它应该类似于app/views/posts/show.html.erb,但请注意它使用post而不是@post:
然后在app/views/welcome/show.html.erb中的某个地方:
使用重定向到
在app/controllers/welcome_controller.rb中:
这会将用户重定向到最新的帖子页面。请注意,这将导致对web服务器的两个请求:第一个是welcomeshow,第二个是postsshow
使用分部词
创建app/views/posts/_post.html.erb,其中应包含帖子的html。它应该类似于app/views/posts/show.html.erb,但请注意它使用post而不是@post:
然后在app/views/welcome/show.html.erb中的某个地方:
覆盖应用程序控制器中的根路径和根url
如果帖子存在,这将根目录设置为帖子路径,否则它将设置为welcomeshow在应用程序控制器中覆盖根目录路径和根目录url
如果帖子存在,这将把根目录设置为帖子路径,否则它将被设置为welcomeshow只是尝试了一下,根本不起作用。另外,我知道我会有一个帖子——如果我没有,我会有更大的问题——那么if对工程的声明也是如此吗?是的,现在你说如果不需要的话,帖子会一直存在。另外,如果你用这段代码发布你所看到的内容,而不是简单地说“不起作用”,这也会很有帮助。我仍然会将“welcomeshow”作为主页,如果我将其从routes.rb中删除,我会得到rails欢迎页面。只是尝试了一下,根本不起作用。另外,我知道我会有一个帖子——如果我没有,我会有更大的问题——那么if对工程的声明也是如此吗?是的,现在你说如果不需要的话,帖子会一直存在。如果你用这段代码发布你所看到的内容,而不是简单地说它不起作用,那么这也会很有帮助。我仍然会将“welcomeshow”作为主页,如果我将其从routes.rb中删除,我会看到rails欢迎页面。这非常有帮助,可以在我喜欢的任何地方获得最后一篇文章的内容,但这并不是我真正想要的。我真的希望最新的帖子成为头版。如果ID57是最后一篇文章,url将读post/57。@丹尼斯,简单重定向到你最近的文章怎么样?检查上面的编辑。宾果。这正是我想要的。对于其他有类似问题的人来说,部分答案也很方便。我也喜欢这个解决方案,因为它给了我一个简单的方法,如果我想的话,可以把它改回我的欢迎页面。谢谢这是非常有帮助的,可以在任何我喜欢的地方获得最后一篇文章的内容,但这并不是我真正想要的。我真的希望最新的帖子成为头版。如果ID57是最后一篇文章,url将读post/57。@丹尼斯,简单重定向到你最近的文章怎么样?检查上面的编辑。宾果。这正是我想要的。对于其他有类似问题的人来说,部分答案也很方便。我也喜欢这个解决方案,因为它给了我一个简单的方法,如果我想的话,可以把它改回我的欢迎页面。谢谢
def show
@post = Post.find(params[:id])
end
def index
@posts = Post.all.order(created_at: :desc).page(params[:page]).per_page(1)
end
def show
redirect_to post_path(Post.last) and return
end
<p>
<strong>Title:</strong>
<%= post.title %>
</p>
<p>
<strong>Body:</strong>
<%= post.body %>
</p>
<%= render partial: 'posts/post', locals: { post: Post.last } %>
class ApplicationController < ActionController::Base
def root_path
latest_post = Post.order("id DESC").first
post_path(latest_post)
end
def root_url
latest_post = Post.order("id DESC").first
post_url(latest_post)
end
end