前提・実現したいこと
現在、Railsチュートリアルをアレンジしながら、Instagramのクローンアプリを作成しています。
そこで、
マイページにおける自己紹介文を編集し、表示をしたいと思っています。
前提
環境:cloud9
Gemfile:
source 'https://rubygems.org' gem 'rails', '5.1.6' gem 'devise' gem 'bcrypt', '3.1.12' gem 'faker', '1.7.3' gem 'will_paginate', '3.1.6' gem 'bootstrap-will_paginate', '1.0.0' gem 'bootstrap-sass', '3.3.7' gem 'puma', '3.9.1' gem 'sass-rails', '5.0.6' gem 'uglifier', '3.2.0' gem 'coffee-rails', '4.2.2' gem 'jquery-rails', '4.3.1' gem 'turbolinks', '5.0.1' gem 'jbuilder', '2.7.0' group :development, :test do gem 'sqlite3', '1.3.13' gem 'byebug', '9.0.6', platform: :mri end group :development do gem 'web-console', '3.5.1' gem 'listen', '3.1.5' gem 'spring', '2.0.2' gem 'spring-watcher-listen', '2.0.1' end group :test do gem 'rails-controller-testing', '1.0.2' gem 'minitest', '5.10.3' gem 'minitest-reporters', '1.1.14' gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end group :production do gem 'pg', '0.20.0' end # Windows環境ではtzinfo-dataというgemを含める必要があります gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
現在、Railsでプロフィールページと、その編集ページを作成しています。
マイページにはユーザーネームと自己紹介文を表示できるように設定し、
その編集先へのリンクを貼っています。
そして、その編集画面から更新ボタンを押した際、エラーが発生しました。
発生している問題・エラーメッセージ
ArgumentError in UsersController#update
wrong number of arguments (given 0, expected 1)
Extracted source (around line #36):
34 def update
35 @user = User.find(params[:id])
36 if @user.update_attributes(user_params)
37 flash[:success] = "プロフィールを更新しました。"
38 redirect_to @user
39 else
該当のソースコード
app/controllers/users_controller.rb
class UsersController < ApplicationController before_action :logged_in_user, only: [:index, :edit, :update, :destroy] before_action :correct_user, only: [:edit, :update] before_action :admin_user, only: :destroy def index @users = User.paginate(page: params[:page]) end def show @user = User.find(params[:id]) end def new @user = User.new end def create @user = User.new(user_params) if @user.save log_in @user flash[:success] = "Instagramへようこそ!" redirect_to @user else render 'new' end end def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if @user.update_attributes(user_params) flash[:success] = "プロフィールを更新しました。" redirect_to @user else render 'edit' end end def destroy User.find(params[:id]).destroy flash[:success] = "ユーザーが削除されました。" redirect_to users_url end private def user_params params.require(:user).permit(:fullname, :username, :email, :profile, :url, :phonenumber, :password, :sex, :password_confirmation) end # beforeアクション # ログイン済みユーザーかどうか確認 def logged_in_user unless logged_in? store_location flash[:danger] = "ログインして下さい" redirect_to login_url end end # 正しいユーザーかどうか確認 def correct_user @user = User.find(params[:id]) redirect_to(root_url) unless current_user?(@user) end # 管理者かどうか確認 def admin_user redirect_to(root_url) unless current_user.admin? end end
app/views/users/edit.html.erb
<% provide(:title, "プロフィール編集") %> <h1>プロフィール編集</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= form_for(@user) do |f| %> <%= render 'shared/error_messages' %> <!--プロフィール写真--> <%= f.label :ユーザーネーム %> <%= f.text_field :username, class: 'form-control' %> <%= f.label :フルネーム %> <%= f.text_field :fullname, class: 'form-control' %> <%= f.label :ウェブサイト %> <%= f.text_field :url, class: 'form-control' %> <%= f.label :自己紹介 %> <%= f.text_area :profile, placeholder: "自己紹介文" %> <%= f.label :メールアドレス %> <%= f.text_field :email, class: 'form-control' %> <%= f.label :電話番号 %> <%= f.text_field :phonenumber, class: 'form-control' %> <%= f.label :性別 %> <%= f.text_field :sex, class: 'form-control' %> <%= link_to "パスワードを変更する", edit_password_reset_path %> <%= f.label :password %> <%= f.password_field :password, class: 'form-control' %> <%= f.label :password_confirmation, "Confirmation" %> <%= f.password_field :password_confirmation, class: 'form-control' %> <%= f.submit "更新する", class: "btn btn-primary" %> <% end %> </div> </div> <%= link_to "ユーザー削除", @user, method: :delete, data: { confirm: "よろしいですか?" } %>
app/views/users/show.html.erb
<% provide(:title, @user.fullname) %> <div class="row"> <aside class="col-md-4"> <section class="user_info"> <h1> <!--<%= @user.fullname %>--> <%= @user.username %> </h1> <p>自己紹介 : <%= @user.profile %></p> <%= link_to "プロフィール編集", edit_user_path(current_user) %> </section> </aside> </div>
実際のイメージ
Qiitaや他の掲示板等による情報収集も試みましたが、解決には至りませんでした。
解決策や原因を教えていただきたいです。お願い致します。
あなたの回答
tips
プレビュー