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

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

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

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

Ruby on Rails

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1700閲覧

【Rails】carrierwaveでArgumentErrorを解決したいです。

tkrhashi

総合スコア2

Ruby

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

Ruby on Rails

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/05 15:24

編集2020/05/06 02:40

前提・実現したいこと

carrierwave を用いてユーザーアイコンの設定を実現したいのですが、以下のようなエラーが発生してしまいました。
どこの引数が間違っているのかわかりません。
自分一人で数時間、調べてみましたが解決しなかったので質問させてください。
何かわかる方、よろしくお願いします。

発生している問題・エラーメッセージ

ArgumentError in Users#edit Showing /home/vagrant/tweet_app/app/views/users/edit.html.erb where line #18 raised: wrong number of arguments (given 1, expected 2..3) Extracted source (around line #18): <p>画像</p> <!--<input type="file" name="image" value="<#%= @user.image_name %>">--> <%= file_field :image %>  !この行が#18です! <p>ユーザーID</p> <input name="email" value="<%= @user.email %>">

該当のソースコード

users_controller.rb

ruby

1 def create 2 @user = User.new( 3 name: params[:name], 4 email: params[:email], 5 #image_name: "defaul_user.jpg", 6 password: params[:password], 7 intro: "こんにちは!", 8 image: "defaul_user.jpg" 9 ) 10 11 12 if @user.save 13 session[:user_id] = @user.id 14 flash[:notice] = "ユーザー登録が完了しました!" 15 redirect_to("/map") 16 else 17 render("users/new") 18 end 19 20 21 22 end 23 24 def edit 25 @user = User.find_by(id: params[:id]) 26 end 27 28 29 def update 30 @user = User.find_by(id: params[:id]) 31 @user.name = params[:name] 32 @user.email = params[:email] 33 @user.intro = params[:intro] 34 35 #if params[:image] 36 # @user.image_name = "#{@user.id}.jpg" 37 @user.image = params[:image] 38 # File.binwrite("/home/vagrant/tweet_app/public/user_images/#{@user.image_name}",image.read) 39# end 40 41 42 # if image = params[:comment][:image] 43 # @user.image.attach(image) 44 #end 45 46 if @user.save 47 flash[:notice] ="ユーザー情報を編集しました!" 48 redirect_to("/users/#{@user.id}") 49 else 50 render("users/edit") 51 end 52 end 53 54 def user_params 55 params.require(:user).permit(:name, :image, :email, :intro, :password) 56 end

edit.html.erb

html

1<%= form_tag("/users/#{@user.id}/update", {multipart: true}) do %> 2 <p>ユーザー名</p> 3 <input name="name" value="<%= @user.name %>"> 4 5 <p>画像</p> 6 <!--<input type="file" name="image" value="<#%= @user.image_name %>">--> 7 <%= file_field :image %> 8 <p>ユーザーID</p> 9 <input name="email" value="<%= @user.email %>"> 10 11 <p>自己紹介</p> 12 <textarea name="intro"><%= simple_format @user.intro %></textarea> 13 14 <input type="submit" value="保存"> 15 <% end %>

user.rb

ruby

1class User < ApplicationRecord 2 #has_one_attached :image 3 has_secure_password 4 5 mount_uploader :image, ImageUploader 6 7 validates :name, {presence: true} 8 validates :email, {uniqueness: true, presence: true} 9 10end 11

関係ありそうなところだけ抜粋しました。もし足りない情報があれば追記いたします。

試したこと

サーバーを再起動しました。
ストロングパラメーターをコメントアウトしてみました。

補足情報(FW/ツールのバージョンなど)

rails 5.2

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

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

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

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

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

winterboum

2020/05/05 20:51

codeの開始が`二つなので機能していません。`3つに修正してください
tkrhashi

2020/05/06 02:40

申し訳ありませんでした。 修正致しました。 ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

form_for でも form_with でもなく form_tagを使っているのでややこしくなったかな..
file_field は ActionView::Helpers::FormBuilder と ActionView::Helpers::FormHelper に属するものの二つがあります。

FormBuilderのほうの引数は (method, options = {}) 
FormHelperの方の引数は (object_name, method, options = {})

form_tagを用いたので 後者の file_field が呼ばれたのでしょう。

file_field(@user,:image) として params["user"]["image"] でもらうか
file_field_tag(:image) として params["image"] でもらうか

でしょうか。
form_for、form_with を使わないのはなぜ?

投稿2020/05/06 02:57

winterboum

総合スコア23567

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

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

tkrhashi

2020/05/06 03:57

file_field_tag(:image)に変更したら無事動きました! form_tagにしていたのには特に理由がなく、参考にしていたサイトで使用されていたからです・・・。 丁寧な説明と回答、本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問