Добавление заголовка к твитам в 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" %>
Как только вы исправите это для заполнителя, все будет работать