質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1834閲覧

rails : f.attachment_field で undefined method エラーが出る

Leandro

総合スコア3

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/10/25 04:40

編集2020/10/25 08:35

エラー

あるアプリを作成しているのですがrefileとminimagickを使ってユーザーのプロフィール画像を設定できるようにしたかったのですが、画像投稿フォームであるf.attachment_field を記述した際に以下のようなエラーが出てしまいました。
NoMethodError in Users#edit
引用テキスト

ファイル

gemfile

ruby

1source 'https://rubygems.org' 2git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 4ruby '2.6.3' 5 6# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 7gem 'rails', '~> 5.2.4', '>= 5.2.4.4' 8# Use sqlite3 as the database for Active Record 9gem 'sqlite3' 10# Use Puma as the app server 11gem 'puma', '~> 3.11' 12# Use SCSS for stylesheets 13gem 'sass-rails', '~> 5.0' 14# Use Uglifier as compressor for JavaScript assets 15gem 'uglifier', '>= 1.3.0' 16# See https://github.com/rails/execjs#readme for more supported runtimes 17# gem 'mini_racer', platforms: :ruby 18 19# Use CoffeeScript for .coffee assets and views 20gem 'coffee-rails', '~> 4.2' 21# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks 22gem 'turbolinks', '~> 5' 23# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 24gem 'jbuilder', '~> 2.5' 25# Use Redis adapter to run Action Cable in production 26# gem 'redis', '~> 4.0' 27# Use ActiveModel has_secure_password 28# gem 'bcrypt', '~> 3.1.7' 29 30# Use ActiveStorage variant 31# gem 'mini_magick', '~> 4.8' 32 33# Use Capistrano for deployment 34# gem 'capistrano-rails', group: :development 35 36# Reduces boot times through caching; required in config/boot.rb 37gem 'bootsnap', '>= 1.1.0', require: false 38 39group :development, :test do 40 # Call 'byebug' anywhere in the code to stop execution and get a debugger console 41 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 42end 43 44group :development do 45 # Access an interactive console on exception pages or by calling 'console' anywhere in the code. 46 gem 'web-console', '>= 3.3.0' 47 gem 'listen', '>= 3.0.5', '< 3.2' 48 # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 49 gem 'spring' 50 gem 'spring-watcher-listen', '~> 2.0.0' 51end 52 53group :test do 54 # Adds support for Capybara system testing and selenium driver 55 gem 'capybara', '>= 2.15' 56 gem 'selenium-webdriver' 57 # Easy installation and use of chromedriver to run system tests with Chrome 58 gem 'chromedriver-helper' 59end 60 61# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 62gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 63gem "refile", require: "refile/rails", github: 'manfe/refile' 64gem "refile-mini_magick" 65gem 'devise' 66gem 'font-awesome-rails' 67gem 'bootstrap', '~> 4.1.1' 68gem 'jquery-rails'

devise マイグレーションファイル

ruby

1# frozen_string_literal: true 2 3class DeviseCreateUsers < ActiveRecord::Migration[5.2] 4 def change 5 create_table :users do |t| 6 ## Database authenticatable 7 t.string :email, null: false, default: "" 8 t.string :encrypted_password, null: false, default: "" 9 10 ## Recoverable 11 t.string :reset_password_token 12 t.datetime :reset_password_sent_at 13 14 ## Rememberable 15 t.datetime :remember_created_at 16 17 ## Trackable 18 # t.integer :sign_in_count, default: 0, null: false 19 # t.datetime :current_sign_in_at 20 # t.datetime :last_sign_in_at 21 # t.string :current_sign_in_ip 22 # t.string :last_sign_in_ip 23 24 ## Confirmable 25 # t.string :confirmation_token 26 # t.datetime :confirmed_at 27 # t.datetime :confirmation_sent_at 28 # t.string :unconfirmed_email # Only if using reconfirmable 29 30 ## Lockable 31 # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts 32 # t.string :unlock_token # Only if unlock strategy is :email or :both 33 # t.datetime :locked_at 34 35 t.string :name 36 t.string :introduction 37 t.string :profile_image_id 38 39 t.timestamps null: false 40 end 41 42 add_index :users, :email, unique: true 43 add_index :users, :reset_password_token, unique: true 44 # add_index :users, :confirmation_token, unique: true 45 # add_index :users, :unlock_token, unique: true 46 end 47end 48

user.rb

ruby

1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 has_many :books, dependent: :destroy 7 attachment :profile_image 8end

application_controller

ruby

1class ApplicationController < ActionController::Base 2 protect_from_forgery with: :exception 3 4 before_action :configure_permitted_parameters, if: :devise_controller? 5 before_action :authenticate_user! 6 7 protected 8 9 def configure_permitted_parameters 10 added_attrs = [:user_name, :email, :password, :password_confirmation, :remember_me] 11 devise_parameter_sanitizer.permit :sign_up, keys: added_attrs 12 devise_parameter_sanitizer.permit :account_update, keys: added_attrs 13 end 14end

users_controller

ruby

1class UsersController < ApplicationController 2 def new 3 @user = User.new 4 end 5 def create 6 @user = User.new(user_params) 7 @user.save 8 end 9 def index 10 @users = User.all 11 @book = Book.new 12 end 13 14 def show 15 @user = User.find(params[:id]) 16 end 17 private 18 def edit 19 @user = User.find(current_user.id) 20 @user.update(user_params) 21 redirect_to user_path(current_user.id) 22 end 23 def user_params 24 params.require(:user).permit(:name, :introduction, :profile_image) 25 end 26end

views/users/edit.html

ruby

1 <section class="mt-3"> 2 <div> 3 <h2>Edit</h2> 4 </div> 5 <%= form_with model: @user, local:true do |f| %> 6 <div class="form-group"> 7 <label for="name_input">Name</label> 8 <%= f.text_field :name ,class:"form-control", id:"name_input"%> 9 </div> 10 <div class="form-group"> 11 <label for="img_input">Image</label> 12 <!-- 問題の場所--> 13 <%= f.attachment_field :profile_image, class:"form-control", id:"img_input"%> 14 </div> 15 <div class="form-group"> 16 <label for="introduction_input">Introduction</label> 17 <%= f.text_area :introduction ,class:"form-control", id:"introduction_input"%> 18 </div> 19 <%= f.submit 'update',class:"btn btn-secondary w-100" %> 20 <% end %> 21 </section>

レイアウト

views/layout/application.html.erb

ruby

1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Bookers2</title> 5 <%= csrf_meta_tags %> 6 <%= csp_meta_tag %> 7 8 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 9 <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 10 </head> 11 <body class="container-fluid "> 12 <%= render partial: "shered/header" %> 13 <%= yield %> 14 </body> 15</html>

views/shared/_header.html.erb

ruby

1<header class="row bg-dark justify-content-between p-2"> 2 <div class="text-white"> 3 <h2>Bookers</h2> 4 </div> 5 <ul class="nav"> 6 <% if user_signed_in? %> 7 <li class="nav-item"> 8 <!-- Home --> 9 <%= link_to user_path(current_user.id) ,class: "nav-link text-white" do%> 10 <%= fa_icon "home" %> Home 11 <%end%> 12 </li> 13 <li class="nav-item"> 14 <!-- Users --> 15 <%= link_to users_path ,class: "nav-link text-white" do%> 16 <%= fa_icon "users" %> Users 17 <%end%> 18 </li> 19 <li class="nav-item"> 20 <!-- Books --> 21 <%= link_to books_path ,class: "nav-link text-white" do%> 22 <%= fa_icon "book" %> Books 23 <%end%> 24 </li> 25 <li class="nav-item"> 26 <!-- Log out --> 27 <%= link_to destroy_user_session_path, method: :delete ,class: "nav-link text-white" do%> 28 <%= fa_icon "sign-out" %> log out 29 <% end %> 30 </li> 31 </ul> 32 <% else%> 33 <li class="nav-item"> 34 <!-- Home --> 35 <%= link_to new_user_session_path ,class: "nav-link text-white" do%> 36 <%= fa_icon "home" %> Home 37 <%end%> 38 </li> 39 <li class="nav-item"> 40 <!-- About --> 41 <%= link_to new_user_session_path ,class: "nav-link text-white" do%> 42 <%= fa_icon "link" %> About 43 <%end%> 44 </li> 45 <li class="nav-item"> 46 <!-- Sign up --> 47 <%= link_to new_user_registration_path ,class: "nav-link text-white" do%> 48 <%= fa_icon "user-plus"%> sign up 49 <%end%> 50 </li> 51 <li class="nav-item"> 52 <!-- Sign in --> 53 <%= link_to new_user_session_path ,class: "nav-link text-white" do%> 54 <%= fa_icon "sign-in" %> login 55 <%end%> 56 </li> 57 </ul> 58 <% end %> 59</header>

他にも必要と思われるファイルがあれば追記しますのでコメントをお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2020/10/25 07:53

viewの上の方省略しないで
Leandro

2020/10/25 08:37

views/users/edit.html.erbはあれで全てですが、application.html.erbに部分テンプレートを使ってヘッダーを追加していたので、それを追記しました!
guest

回答1

0

自己解決

user_controllerのprivateの位置がeditの上になっていました。
凡ミスです。お騒がせしました。

投稿2020/10/25 10:48

Leandro

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問