Ruby on rails 如果在创建操作中保存成功,我尝试重定向到show操作(这样我就可以看到新帖子),但是得到错误?
我试图在成功创建操作后重定向到show操作,以便查看用户刚刚制作的帖子(post controller)。我收到以下错误消息: 语法错误,意外的关键字,应为输入结束 更多调试信息: 除非source.u编码有效? 引发错误编码错误。新建(@source,Encoding.default_internal) 结束 这是邮局管理员Ruby on rails 如果在创建操作中保存成功,我尝试重定向到show操作(这样我就可以看到新帖子),但是得到错误?,ruby-on-rails,ruby-on-rails-4,controller,routes,Ruby On Rails,Ruby On Rails 4,Controller,Routes,我试图在成功创建操作后重定向到show操作,以便查看用户刚刚制作的帖子(post controller)。我收到以下错误消息: 语法错误,意外的关键字,应为输入结束 更多调试信息: 除非source.u编码有效? 引发错误编码错误。新建(@source,Encoding.default_internal) 结束 这是邮局管理员 class PostsController < ApplicationController def index @posts = P
class PostsController < ApplicationController
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new(params[:id])
end
def create
@post = Post.new(params[:id])
if @post.save
redirect_to @post
else
render :new
end
end
end
class PostsController
以下是我的观点:
<h1>Posts</h1>
Title: <%= post.title %><br>
Body: <%= post.body %><br>
url: <%= post.url %><br>
<% end %>
帖子
标题:
正文:
网址:
索引视图:
<% @posts.each do |post| %>
谢谢你的帮助。我在其他任何地方都找不到答案。您没有传递动作秀所需的新对象的
id
redirect_to post_path(@post)
或者根据(参见第4章“参数”),您可以编写
if @post.save
redirect_to @post
else
render :new
end
显示视图必须是:
Post
标题:
正文:
索引视图必须是:
帖子
标题:
正文:
还将创建操作更改为:
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render :new
end
end
并添加到控制器(在最后一个结束之前)
:
好的,现在它在创建帖子后重定向到show视图,但我看不到新创建的帖子。我用当前代码和更新的错误消息更新了问题。你的
显示页面有效吗?!1.视图末尾的
是什么。2.您在控制器中定义变量@post
,因此您需要
-如果不这样做,它将引发未定义的方法“post”。创建post后,显示页面仍然无法工作,我只是收到了我在问题中输入的错误消息。我摆脱了,而且我确实在我的节目中看到了。或者你的意思是把它放在其他地方?你应该删除
,因为你还没有开始任何块。所有这些都发生了吗?我得到了一个错误,即“post”在show view中是一个未定义的方法或变量?再次复制粘贴,问题就会消除。我做了,现在它说“title”是一个未定义的方法?这意味着一切都正常。检查数据库是否有标题列。检查语法,如果它与视图中的一致(案例也很重要)是的,谢谢。我只需要稍微修改一下db列的名称,现在它就可以工作了。
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render :new
end
end
private
def post_params
params.require(:post).permit(:title, :body, :url) #here you put all attributes you want be able to assign when creating the post
end