前提・実現したいこと
家計簿アプリを作成中です。
Deviseでユーザ登録が出来るようになりました。
支払い登録画面を表示しようとすると、エラーが出ます。
-成功する書き方
<%= form_with url: payments_create_path, local: true, scope: :payment do |form| %>
- エラーが出る書き方
<%= form_with model: Payment.new, local: true do |form| %>
model指定で成功させるためには、何が必要でしょうか。
発生している問題・エラーメッセージ
NoMethodError in Payments#new
該当のソースコード
Rails.application.routes.draw do get 'payments/new', :to => "payments#new" post 'payments/create', :to => "payments#create" devise_for :users, :controllers => { :registrations => 'users/registrations', :sessions => 'users/sessions' } devise_scope :user do get "user/:id", :to => "users/registrations#detail" get "signup", :to => "users/registrations#new" get "login", :to => "users/sessions#new" get "logout", :to => "users/sessions#destroy" end # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
class PaymentsController < ApplicationController def new @payment = current_user.payments.new end def create @payment = current_user.payments.new(payment_params) if @payment.save redirect_to payments_new_path, notice: "支払い「#{@payment.item}を登録しました。" else render :new end end private def payment_params params.require(:payment).permit(:item, :price, :category) end end
<h1>支払い登録</h1> <%= form_with model: Payment.new, local: true do |form| %> <%= form.label :item, 'アイテム' %> <%= form.text_field :item %> <%= form.label :price, '支払い' %> <%= form.text_field :price %> <%= form.label :category, '分類' %> <%= form.text_field :category %> <%= form.submit %> <% end %>
class Payment < ApplicationRecord belongs_to :user end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/14 07:15
2019/07/14 07:17
2019/07/14 07:18
2019/07/14 07:36
2019/07/14 07:46
2019/07/14 07:51
2019/07/14 11:57