Добавление заголовка к твитам в Rails Tutorial Майкла Хартла

Я пытаюсь добавить заголовки в твиты, чтобы немного попрактиковаться в Rails. Я продолжаю получать эту ошибку на странице, где составлены твиты:

undefined method `title'

Выделяется строка 4 app/views/shared/_micropost_form.html.erb файл:

<%= form_for(@micropost) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
    <%= f.text_area :title, placholder: "Event name" %>
    <%= f.text_area :content, placeholder: "Compose new micropost..." %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

Вот мой microposts_controller.rb файл:

class MicropostsController < ApplicationController
  before_action :signed_in_user, only: [:create, :destroy]
  before_action :correct_user,   only: :destroy

  def create
    @micropost = current_user.microposts.build(micropost_params)
    if @micropost.save
      flash[:success] = "Micropost created!"
      redirect_to root_url
    else
      @feed_items = []
      render 'static_pages/home'
     end
   end

  def destroy
    @micropost.destroy
    redirect_to root_url
  end

  private

    def micropost_params
      params.require(:micropost).permit(:content)
    end

    def correct_user
      @micropost = current_user.microposts.find_by(id: params[:id])
      redirect_to root_url if @micropost.nil?
   end
end

и мой [ts]_create_microposts.rb файл:

class CreateMicroposts < ActiveRecord::Migration
  def change
    create_table :microposts do |t|
      t.string :content
      t.integer :user_id
      t.string :title

      t.timestamps
    end
    add_index :microposts, [:user_id, :created_at]
  end
end

2 ответа

Решение

Кажется, вы могли забыть выполнить миграцию:

rails generate migration AddTitleToMicroposts title:string

или, возможно, db:migrate,

Кроме того, вы неправильно написали заполнитель в строке 4.

Вы неправильно написали заполнитель в app/views/shared/_micropost_form.html.erb файл

увидеть строку: <%= f.text_area :title, placholder: "Event name" %>

Как только вы исправите это для заполнителя, все будет работать

Другие вопросы по тегам