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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

1回答

2822閲覧

railsのredirect_toの引数について

mycee0001

総合スコア16

Ruby

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

1クリップ

投稿2016/03/10 12:05

railsにて情報共有アプリを作成しております。userモデルに自己紹介用のショートムービカラム(videoカラム)を有しています。問題が起きている点はuserを新規登録後にcontrollerのredirect_toが引数が違うとエラーを吐きます。新規登録時の必須入力項目として、username,email,password,video(アップローダにより)でございます。ソースコードはいかのとおりです。アドバイスお願いします

エラー内容
ArgumentError in UsersController#create
wrong number of arguments (given 2, expected 1)

ruby

1 2sign_in @user 3 flash[:success] = "Welcome to the Sample App!" 4 redirect_to @user #←ここで引数違いによる,giraエラーになる(given2 expected1) 5 else 6 render 'new' 7 end

ruby

1class UsersController < ApplicationController 2 before_action :signed_in_user, only: [:index,:edit, :update,:destroy, :following, :followers] 3 before_action :correct_user, only: [:edit, :update] 4 before_action :admin_user, only: :destroy 5 6 def index 7 @users = User.paginate(page: params[:page]) 8 end 9 10 def show 11 @user = User.find(params[:id]) 12 @microposts = @user.microposts.paginate(page: params[:page]) 13 end 14 15 def new 16 @user = User.new 17 end 18 19 def create 20 @user = User.new(user_params) 21 if @user.save 22 sign_in @user 23 flash[:success] = "Welcome to the Sample App!" 24 redirect_to @user 25 else 26 render 'new' 27 end 28 end 29 30def edit 31@user = User.find(params[:id]) 32end 33 34 35def update 36 @user = User.find(params[:id]) 37 if @user.update_attributes(user_params) 38 flash[:success] = "Profile updated" 39 redirect_to @user, notice: '更新しました。' 40 else 41 render 'edit' 42 end 43end 44 45 def destroy 46 User.find(params[:id]).destroy 47 flash[:success] = "User destroyed." 48 redirect_to users_url 49 end 50 51 def following 52 @title = "Following" 53 @user = User.find(params[:id]) 54 @users = @user.followed_users.paginate(page: params[:page]) 55 render 'show_follow' 56 end 57 58 def followers 59 @title = "Followers" 60 @user = User.find(params[:id]) 61 @users = @user.followers.paginate(page: params[:page]) 62 render 'show_follow' 63 end 64 65 private 66 67 def user_params 68 params.require(:user).permit(:name, :email, :password, :password_confirmation, :video) 69 end 70 71 def signed_in_user 72 unless signed_in? 73 store_location 74 redirect_to signin_url, notice: "Please sign in." 75 end 76 end 77 78 def correct_user 79 @user = User.find(params[:id]) 80 redirect_to(root_path) unless current_user?(@user) 81 end 82 83 def admin_user 84 redirect_to(root_path) unless current_user.admin? 85 end 86end 87

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

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

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

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

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

guest

回答1

0

ruby

1redirect_to user_url(@user), notice: ...

にしてみてはいかがでしょうか。
暗黙の変換によって意図しない呼び出し方になっている可能性があります。

それから、redirect_toの同じ使い方をしているupdateの方はうまく動いているのでしょうか。
ユーザ情報の変更です。

投稿2016/03/31 06:53

Yurakuan

総合スコア27

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問