いつもお世話になっておりますm(_ _)m
登録しているユーザー同士で評価をし合えるようなシステムを作りたいと考えています。
下記のような見慣れないエラーが出てきてしまい困っています。呼び出し側の引数とメソッド側の引数が異なっているということだそうなのですが、いまいち理解に苦しんでいます。
エラー文
Ruby
1wrong number of arguments (5 for 1) 2 3 def create_params 4 params.require(:id, :rate, :content, :user_id, :reviewed_id) 5 end 6 7{"utf8"=>"✓", 8"review"=>{"reviewed_id"=>"1", "user_id"=>"2", "rate"=>"3", "content"=>"こんにちは"}, 9 "commit"=>"レビューを登録する", 10 "id"=>"1"}
ソースコード
review.rb(モデル)
Ruby
1class Review < ApplicationRecord 2 belongs_to :user 3 belongs_to :reviewed, class_name: "User", foreign_key: :reviewed_id 4end
reviews_controller.rb(コントローラー)
Ruby
1class ReviewsController < ApplicationController 2 before_action :set_review, only: [:edit, :update, :destroy] 3 before_action :correct_user, only: [:edit, :destroy] 4 5 def new 6 @user = User.find(params[:id]) 7 if signed_in? 8 @review = current_user.reviews.build 9 else 10 redirect_to new_user_registration_path 11 end 12 end 13 14 def create 15 @review = current_user.reviews.create(create_params) 16 if @review.save 17 flash[:success] = "レビューが登録されました!" 18 redirect_to root_path 19 else 20 flash[:alert] = "レビューの登録に失敗しました。" 21 render 'new' 22 end 23 end 24 25 def edit 26 end 27 28 def update 29 if @review.update_attributes(create_params) 30 flesh[:success] = "レビューが更新されました!" 31 redirect_to root_path 32 else 33 flash[:alert] = "レビューの編集に失敗しました。" 34 render 'edit' 35 end 36 end 37 38 def destroy 39 @review.destroy 40 flash[:success] = "レビューが削除されました。" 41 redirect_to request.referrer || root_url 42 end 43 44 private 45 46 def create_params 47 params.require(:id, :rate, :content, :user_id, :reviewed_id) 48 end 49end
マイグレーションファイル(review)
Ruby
1class CreateReviews < ActiveRecord::Migration[5.1] 2 def change 3 create_table :reviews do |t| 4 t.integer :rate 5 t.text :content 6 t.references :user, foreign_key: true 7 t.references :reviewed, foreign_key: true 8 9 t.timestamps 10 end 11 end 12end
view
Ruby
1 <%= form_for(@review) do |f| %> 2 <%= f.hidden_field :reviewed_id, value: @user.id %> 3 <%= f.hidden_field :user_id, value: current_user.id %> 4 <div class="rate_form"> 5 <div class="form-group"> 6 <label>5段階評価 </label> 7 <div class="form-control"> 8 <div id="star"></div> 9 <%= f.hidden_field :rate %> 10 </div> 11 </div> 12 <div class="form-list"> 13 <label>レビュー内容</label> 14 <%= f.text_area :content, class: "form-control " %> 15 </div> 16 </div> 17 <%= f.submit "レビューを登録する", class: "btn submit" %> 18 <% end %>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/01 04:09