Ruby on Rails:在向博客添加描述时遇到问题

时间:2016-07-21 01:30:29

标签: ruby-on-rails ruby rails-migrations

在我的Rails应用程序中,所有帖子都显示在索引页面上。只有帖子标题及其发布日期才会显示在索引页面上。例如,如果您点击某个帖子,系统会将您转到localhost:3000/posts/1,您可以在其中查看该帖子的标题,日期,正文和评论。

我正在尝试做什么

我不想只在索引页面上显示每个帖子的标题和日期,而是要显示每个帖子的标题,日期和简短描述。

我做了什么

原始new.html.erb是创建新帖子的页面,其中部分内容如下:

<%= form_for :post, url: posts_path do |f| %>
  <%= f.text_field :title %>
  <%= f.text_area :body %>
<% end %>

所以我补充道:

<%= f.text_field :description %>

我的帖子模型:

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end

所以,我补充道:

t.string :description

那不起作用。所以我试着在终端

中这样做
$ rails g model Post title:string description:string body:text --force

情况更糟。总的来说,我刚刚重新启动教程时遇到了很多错误。

所以,我的问题是:“如何在帖子中添加说明?”

3 个答案:

答案 0 :(得分:4)

您可以通过运行迁移来执行此操作。运行rails generate migration add_description_to_posts description:string

然后运行rake db:migrate以运行迁移。然后,您的帖子表中会有一个描述列

要将说明添加到帖子中,您需要在帖子控制器的posts params中添加:description,并在帖子表单中添加输入字段以供说明。

要显示说明,您需要添加标记<%= @post.description %>

答案 1 :(得分:3)

请按照以下步骤操作:

步骤1:迁移以使用rails生成器添加新字段。

rails g migration add_description_to_posts

步骤2:在生成的迁移文件中:

class AddDescriptionsToPosts < ActiveRecord::Migration
  def change
    add_column :posts, :description, :string        
  end
end

第3步:迁移数据库

rake db:migrate

第4步:改变观点。

<%= form_for :post, url: posts_path do |f| %>
 <%= f.text_field :title %>
 <%= f.text_area :body %>
 <%= f.text_area :description %>
<% end %>

步骤5:在PostController.rb中,在白名单参数中添加描述:

def post_params
  params.require(:post).permit(:title, :body, :description)
end

如果您遇到任何困难,请告诉我。

答案 2 :(得分:2)

您有两种选择:

选项1 :您不想创建new migration file

第1步:您运行rake db:rollback

第2步:在您的migration file中添加t.string :description

class CreatePosts < ActiveRecord::Migration
 def change
   create_table :posts do |t|
     t.string :title
     t.string :description
     t.text :body

     t.timestamps
   end
  end
end

第3步:您运行rake db:migrate

第4步:在您的new.html.erb中,您可以这样做:

<%= form_for :post, url: posts_path do |f| %>
  <%= f.text_field :title %>
  <%= f.text_area :description %>
  <%= f.text_area :body %>
<% end %>

选项2 :您想要创建new migration file

第1步:您创建new migration file以将new column添加到your table

rails generate migration add_description_to_posts description:string

step2 :在您创建的迁移文件中,添加新列

add_column :posts, :description, :string

第3步:您运行rake db:migrate

第4步:在您的new.html.erb中,您可以这样做:

<%= form_for :post, url: posts_path do |f| %>
  <%= f.text_field :title %>
  <%= f.text_area :description %>
  <%= f.text_area :body %>
<% end %>