前提・実現したいこと
簡単なTweetappを作ろうとしています。
投稿機能を作る際にscaffledを使いました。
ユーザー個人の投稿一覧を作りたいので
upload controller のcreateメソッドに@current_user.id(投稿したひとのID)を追加したいです。
初めての質問で伝わりづらいかもしれません。
回答いただけると幸いです。
発生している問題・エラーメッセージ
送る値と帰ってくる値の数が違うらしいのですがどう対処したらいいのわかりません。
ArgumentError in UploadsController#create wrong number of arguments (given 2, expected 0..1)
該当のソースコード
ruby
1class UploadsController < ApplicationController 2before_action :set_upload, only: [:show, :edit, :update, :destroy] 3before_action :authenticate_user 4 # GET /uploads 5 # GET /uploads.json 6 def index 7 @uploads = Upload.all.order(created_at: :desc) 8 end 9 10 # GET /uploads/1 11 # GET /uploads/1.json 12 def show 13 end 14 15 # GET /uploads/new 16 def new 17 @upload = Upload.new 18 end 19 20 # GET /uploads/1/edit 21 def edit 22 end 23 24 # POST /uploads 25 # POST /uploads.json 26 def create 27 @upload = Upload.new(upload_params, user_id: @current_user.id) 28 29 respond_to do |format| 30 if @upload.save 31 format.html { redirect_to @upload, notice: 'Upload was successfully created.' } 32 format.json { render :show, status: :created, location: @upload } 33 else 34 format.html { render :new } 35 format.json { render json: @upload.errors, status: :unprocessable_entity } 36 end 37 end 38 end 39 40 # PATCH/PUT /uploads/1 41 # PATCH/PUT /uploads/1.json 42 def update 43 respond_to do |format| 44 if @upload.update(upload_params) 45 format.html { redirect_to @upload, notice: 'Upload was successfully updated.' } 46 format.json { render :show, status: :ok, location: @upload } 47 else 48 format.html { render :edit } 49 format.json { render json: @upload.errors, status: :unprocessable_entity } 50 end 51 end 52 end 53 54 # DELETE /uploads/1 55 # DELETE /uploads/1.json 56 def destroy 57 @upload.destroy 58 respond_to do |format| 59 format.html { redirect_to uploads_url, notice: 'Upload was successfully destroyed.' } 60 format.json { head :no_content } 61 end 62 end 63 64 private 65 # Use callbacks to share common setup or constraints between actions. 66 def set_upload 67 @upload = Upload.find_by(id: params[:id]) 68 end 69 70 # Only allow a list of trusted parameters through. 71 def upload_params 72 params.require(:upload).permit(:image, :title, :body) 73 end 74end 75 76
from viwe
<%= form_with(model: upload, local: true) do |form| %> <% if upload.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(upload.errors.count, "error") %> prohibited this upload from being saved:</h2> <ul> <% upload.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.label :image %> <%= form.file_field :image %> </div> <div class="field"> <%= form.label :名前 %> <%= form.text_field :title %> </div> <div class="field"> <%= form.label :値段 %> <%= form.text_field :body %> </div> <div class="actions"> <%= form.submit %> </div> <% end %>
ここに問題に対して試したことを記載してください。
from を<%= form_with(model: upload, local: true) do |form| %>から<%=form_tag>
にかえ<input name="">で記述し、createメソッドの受け取りを Upload.new(title: params[:title])などと記述したのですがうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
Ruby 2.5.7
Rails 5.2.3
PostgreSQL
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/22 09:44