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 如果在创建操作中保存成功,我尝试重定向到show操作(这样我就可以看到新帖子),但是得到错误?_Ruby On Rails_Ruby On Rails 4_Controller_Routes - Fatal编程技术网

Ruby on rails 如果在创建操作中保存成功,我尝试重定向到show操作(这样我就可以看到新帖子),但是得到错误?

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

我试图在成功创建操作后重定向到show操作,以便查看用户刚刚制作的帖子(post controller)。我收到以下错误消息:

语法错误,意外的关键字,应为输入结束

更多调试信息: 除非source.u编码有效? 引发错误编码错误。新建(@source,Encoding.default_internal) 结束

这是邮局管理员

    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