前提・実現したいこと
form_forにてユーザー情報と商品情報を送りたいです。その際に、ユーザー情報を入力しないでも登録情報を表示させたいです。
発生している問題・エラーメッセージ
NoMethodError in Contacts#new Showing /Users/watanabekenta/orijinals/n-web_app/app/views/contacts/new.html.erb where line #28 raised: undefined method `name' for :current_user:Symbol
該当のソースコード
newhtml
1<div class="form-group"> 2 <div class='form-text-wrap'> 3 <label class="form-text">お名前</label> 4 <span class="indispensable">必須</span> 5 </div> 6 <%= f.text_area :current_user.name, class:"input-default", id:"user_name" %> 7 </div> 8 9 <div class="form-group"> 10 <div class='form-text-wrap'> 11 <label class="form-text">メールアドレス</label> 12 <span class="indispensable">必須</span> 13 </div> 14 <%= f.email_field current_user.email, class:"input-default", id:"email" %> 15 </div> 16 17 <div class="form-group"> 18 <div class='form-text-wrap'> 19 <label class="form-text">所属</label> 20 <span class="indispensable">必須</span> 21 </div> 22 <%= f.text_area current_user.occupation, class:"input-default" %> 23 </div> 24 <div class="form-group"> 25 <div class='form-text-wrap'> 26 <label class="form-text">メーカー名</label> 27 <span class="indispensable">必須</span> 28 </div> 29 <%= f.text_area :contact_manufacturer, class:"input-default", id:"contact_mamufacture", placeholder:"サンプル商品メーカー名" %> 30 </div> 31 <div class="form-group"> 32 <div class='form-text-wrap'> 33 <label class="form-text">商品名</label> 34 <span class="indispensable">必須</span> 35 </div> 36 <%= f.text_area :contact_item_name, class:"input-default", id:"contact_item_name", placeholder:"サンプル商品名" %> 37 </div> 38 <div class="form-group"> 39 <div class='form-text-wrap'> 40 <label class="form-text">特記事項</label> 41 </div> 42 <%= f.text_area :message, class:"input-default", id:"contact_message", placeholder:"補足があればご記入ください" %> 43 </div> 44 <div class="form-group"> 45 <h2 class='form-bottom-text'> 46 47 </h2> 48 </div> 49 <div class='register-btn'> 50 <%= f.submit "サンプル依頼" ,class:"register-red-btn" %> 51 </div> 52 </div> 53<% end %>
contactscontroller
1def show 2 end 3 4 # GET /contacts/new 5 def new 6 @user = current_user.id 7 @contact = Contact.new 8 end 9 10 # GET /contacts/1/edit 11 def edit 12 end 13 14 # POST /contacts or /contacts.json 15 def create 16 @contact = Contact.new(contact_params) 17 if @contact.save 18 ContactMailer.contact_mail(@contact).deliver 19 redirect_to contacts_path,notice: 'Contact was successfully created.' 20 end 21 end 22 23 # PATCH/PUT /contacts/1 or /contacts/1.json 24 def update 25 respond_to do |format| 26 if @contact.update(contact_params) 27 format.html { redirect_to @contact, notice: "Contact was successfully updated." } 28 format.json { render :show, status: :ok, location: @contact } 29 else 30 format.html { render :edit } 31 format.json { render json: @contact.errors, status: :unprocessable_entity } 32 end 33 end 34 end 35 36 # DELETE /contacts/1 or /contacts/1.json 37 def destroy 38 @contact.destroy 39 respond_to do |format| 40 format.html { redirect_to contacts_url, notice: "Contact was successfully destroyed." } 41 format.json { head :no_content } 42 end 43 end 44 45 private 46 # Use callbacks to share common setup or constraints between actions. 47 def set_contact 48 @contact = Contact.find(params[:id]) 49 end 50 51 # Only allow a list of trusted parameters through. 52 def contact_params 53 params.require(:contact).permit(:contact_manufacturer, :contact_item_name, :message).merge(user_id: current_user.id) 54 end 55end 56
contactmodel
1class Contact < ApplicationRecord 2 has_many :users, through: :user_contacts 3 has_many :user_contacts 4 5 with_options presence: true do 6 validates :contact_manufacturer 7 validates :contact_item_name 8 end 9end
試したこと
アソシエーションでつなげ、contact_params.marge(user_id: current_user.id)にてユーザー情報も取得してあります。何故undefined method `name'になるのでしょうか?
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/11 09:59
2021/09/11 10:03
2021/09/11 10:06
2021/09/11 10:37