我是rails的新手,很少知道ruby,我刚刚从Rails Guide 4.0中盯着教程。一切都很好只是卡在一个错误上:找不到没有ID的帖子。
我在Rails指南Rails入门中做了所有事情。
以下是rails guide的代码:
def show
@posts = Post.find(params[:id])
end
以下是查看代码:
<p>
<strong>Title:</strong>
<%= @posts.title %>
</p>
<p>
<strong>Text:</strong>
<%= @posts.text %>
</p>
此代码栏指南告诉您最终应该能够创建新帖子。访问localhost:3000 / posts / new并试一试!但在创建新帖后它显示错误。
我认为这可能是问题,因为我没有创建索引操作,所以我完成了索引,在索引操作后,当我尝试访问此地址时,它应该显示来自数据库的所有记录,而不是显示记录显示相同的错误:找不到没有ID的帖子
我在stackoverflow上尝试了太多帖子,但都与其他一些对我没用的操作有关。
请帮我解决这个问题,我只是认为不应该因为我正在关注rails指南。
我正在关注rails入门指南,因为它说我添加了索引操作并显示操作。因此,当你访问这个地址/帖子时,你会看到所有帖子,当你创建新帖子时它会重定向显示你输入的上一篇文章,
我正在使用redirect_to @post但是出现错误我卡住了然后我使用redirect_to action: :show, id: @post.id
当我创建一个新帖子然后它重定向到/ posts?id = last_inserted_id时它正在工作但是因为我看到其他脚手架地址应该是帖子/ 1或等等当我访问/发布时它应该显示所有帖子操作定义为控制器中的索引。
routes.rb
<code>
Blog::Application.routes.draw do
root "welcome#new"
resource :posts
</code>
控制器:
class PostsController < ApplicationController
def index
@post = Post.all
respond_to do |format|
format.html #index.html.erb
end
end
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html #show.html.erb
end
end
def new
end
def create
@post = Post.new post_params
@post.save
redirect_to action: :show, id: @post.id
end
private
def post_params
params.require(:post).permit(:title, :message)
end
end
由于
答案 0 :(得分:1)
您应该使用resources :posts
而不是resource
!
resources
生成“完整”CRUD - 7次操作http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-resources
当resource
生成路线uniq资源(没有操作show
)http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-resource