Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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教程5.7入门-数据未显示在视图中_Ruby On Rails_Ruby_Database - Fatal编程技术网

Ruby on rails Rails教程5.7入门-数据未显示在视图中

Ruby on rails Rails教程5.7入门-数据未显示在视图中,ruby-on-rails,ruby,database,Ruby On Rails,Ruby,Database,我正在试用RubyonRails,正在学习“”教程。我已经完成了包括5.7的步骤,现在我应该能够创建一个新帖子并查看它,帖子已经创建,但是标题和文本没有显示 控制器:posts_controller.rb class PostsController < ApplicationController def new end def create @post = Post.new(params[post_params]) @post.save redirect_to @post

我正在试用RubyonRails,正在学习“”教程。我已经完成了包括5.7的步骤,现在我应该能够创建一个新帖子并查看它,帖子已经创建,但是标题和文本没有显示

控制器:posts_controller.rb

class PostsController < ApplicationController
def new
end

def create
  @post = Post.new(params[post_params])
  @post.save
  redirect_to @post
end
def show
    @post = Post.find(params[:id])
end
private
    def post_params
        params.require(:post).permit(:title, :text)
    end
end
class PostsController
创建帖子的视图

<h1>New Post</h1>

<%= form_for :post, url: posts_path do |f| %>
  <p>
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>
 
  <p>
    <%= f.label :text %><br>
    <%= f.text_area :text %>
  </p>
 
  <p>
    <%= f.submit %>
  </p>
<% end %>
新职位


    

 
    

      

用于显示帖子的“显示”视图

<p>
  <strong>Title:</strong>
  <%= @post.title %>
</p>

<p>
  <strong>Text:</strong>
  <%= @post.text %>
</p>

标题:

文本:


我的猜测是,问题在于将数据传递到数据库,但我不知道出了什么问题。有什么想法吗?

new
控制器操作中,确保将
Post
的新实例分配给实例变量:

# app/controllers/posts_controller.rb
def new
  @post = Post.new
end
然后,将
@post
实例变量传递到视图中的
帮助程序的
表单\u:

# app/views/posts/new.html.erb
<%= form_for @post do |f| %>
#app/views/posts/new.html.erb

帮助程序的
表单_需要向其传递一个资源;表单将根据传递的资源类型自动提交到正确的路由。您在此实例中传递了一个新资源,因此表单被路由到资源的
创建
操作。

您可能希望将此帖子的标题更改为类似“视图中未显示数据”的内容。以下是我要确保的:如果您实际上已经在数据库中创建了项,那么我假设您正在使用sqlite。您可以在rails控制台中执行此操作。或者,您可以直接输入表单或您所称的“创建帖子的视图”。 在我看来,控制器中的显示操作和视图是正确的——至少,它们应该显示您的数据。
即使表单不起作用,如果您通过rails控制台输入数据,您的数据也应该显示出来。

我发现问题出在这行

@post = Post.new(params[post_params])
应该是

@post = Post.new(post_params)
感谢所有回答的人