Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将最新发布显示为Rails根页面_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 将最新发布显示为Rails根页面

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

我有一个简单的Rails博客应用程序,目前我在routes文件中将欢迎页面设置为我的应用程序主页

  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