画像を投稿する機能の実装中のエラー form_with model :group
解決したいこと
Ruby on Railsで本を投稿するグループ作成するWebアプリをつくっています。
グループ画像を投稿する機能の実装中にエラーが発生しました。
解決方法を教えていただきたいです。
同じ部分でエラーが出され
NoMethodError in Groups#edit
NoMethodError in Groups#new
でエラーが起きています
以下は部分テンプレート内のため@付けずに入力しています。
該当するソースコード
groups/_form.html.erb 部分テンプレート
<%= form_with model :group, local:true do |f| %>
<div class="form-group">
<%= f.label :グループ名 %>
<%= f.text_field :name %>
</div>
<div class="form-group">
<%= f.label :紹介文 %>
<%= f.text_area :introduction %>
</div>
<div class="form-group">
<%= f.label :グループ画像 %>
<%= f.attachment_field :image %> エラー該当
</div>
<div class="form-group">
<%= f.submit class: 'btn btn-info' %>
</div>
<% end %>
groups/new.html.erb 部分テンプレート呼び出し
<div class='container'>
<div class='row'>
<div class="col-sm-12 col-md-8 col-lg-5 px-5 px-sm-0 mx-auto">
<h1>Create Group</h1>
<%= render 'layouts/errors',obj: @group %>
<%= render 'groups/form', group: @group %> エラー該当
</div>
</div>
</div>
group/edit.html.erb部分テンプレート呼び出し
<div class='container'>
<div class='row'>
<div class="col-sm-12 col-md-8 col-lg-5 px-5 px-sm-0 mx-auto">
<h1>Editing Group</h1>
<%= render 'layouts/errors', obj: @group %>
<%= render 'groups/form', group: @group %> エラー該当
</div>
</div>
groups.controller.rb
class GroupsController < ApplicationController
before_action :authenticate_user!
before_action :ensure_correct_user, only: [:edit, :update]
def index
@book = Book.new
@groups = Group.all
end
def show
@book = Book.new
@group = Group.find(params[:id])
end
def join
@group = group.find(params[:group_id])
@group.users << current_user
redirect_to groups_path
end
def new
@group = Group.new
end
def create
@group = Group.new(group_params)
@group.owner_id = current_user.id
@group.users << current_user
if @group.save
redirect_to groups_path
else
render 'new'
end
end
def edit
@group = Group.find(params[:id])
end
def update
if @group.update(group_params)
redirect_to groups_path
else
render "edit"
end
end
def destroy
@group = Group.find(params[:id])
@group.users.delete(current_user)
redirect_to groups_path
end
ここで指定してます
private
def group_params
params.require(:group).permit(:name,:introduction,:image )
end
def ensure_correct_user
@group = Group.find(params[:id])
unless @group.owner_id == current_user.id
redirect_to groups_path
end
end
end
models/group.rb
class Group < ApplicationRecord
has_many :group_users
has_many :users ,through :group_users
validates :name, presence:true
validates :introduction, presence:true
ここです attachment :image, destroy:false
end
マイグレーションファイル
class CreateGroups < ActiveRecord::Migration[5.2]
def change
create_table :groups do |t|
t.string :name
t.text :introduction
t.string :image_id
t.integer :owner_id
t.timestamps
end
end
end
schema
ActiveRecord::Schema.define(version: 2021_08_05_062250) do
:
create_table "group_users", force: :cascade do |t|
t.integer "user_id"
t.integer "group_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["group_id"], name: "index_group_users_on_group_id"
t.index ["user_id"], name: "index_group_users_on_user_id"
end
create_table "groups", force: :cascade do |t|
t.string "name"
t.text "introduction"
t.string "image_id"
t.integer "owner_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
:
Gemfile
gem "refile", require: "refile/rails", github: 'manfe/refile'
gem "refile-mini_magick"
自分で試したこと
コードの見直しや、画像投稿方法の確認・学習、
refileがちゃんと入っていない?と考え rails db:migrateしましたが変わらず(ユーザー画像の投稿はできる状態です)
rails db:statusも全てupになっていました。
初めて質問投稿しましたが、不足ありましたら教授いただければ幸いです。
0