#前提・実現したいこと
rails 5.2.4.1
ruby 2.6.5
has_one :passport
belongs_to :user
にて関連づけたpassportのshowを表示する。
#エラーについて
エラーではないのですが、showを表示する際にURLを入力しているタイミングで
passport_controllerのnewが処理され、
@passport = @user.build_passport
上記コマンドでPassportが初期化され、インスタンスエラーが発生しshowが表示されない。
Started GET "/users/1/passports/new" for ::1 at 2020-03-29 16:55:22 +0900 Processing by PassportsController#new as HTML Parameters: {"user_id"=>"1"} User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.1/lib/active_record/log_subscriber.rb:98 User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ app/controllers/passports_controller.rb:9 Passport Load (0.3ms) SELECT "passports".* FROM "passports" WHERE "passports"."user_id" = ? LIMIT ? [["user_id", 1], ["LIMIT", 1]] ↳ app/controllers/passports_controller.rb:10 (0.1ms) begin transaction ↳ app/controllers/passports_controller.rb:10 Passport Destroy (2.0ms) DELETE FROM "passports" WHERE "passports"."id" = ? [["id", 11]] ↳ app/controllers/passports_controller.rb:10 (37.9ms) commit transaction ↳ app/controllers/passports_controller.rb:10 Rendering passports/new.html.erb within layouts/application Rendered partial/_error_messages.html.erb (4.1ms) Rendered passports/new.html.erb within layouts/application (40.0ms) Rendered partial/_navbar.html.erb (1.6ms) Rendered partial/_flash.html.erb (0.7ms) Rendered partial/_footer.html.erb (0.7ms) Completed 200 OK in 695ms (Views: 545.6ms | ActiveRecord: 40.9ms)
#該当のソースコード
app/controllers/passports_controller.rb
class PassportsController < ApplicationController before_action :authenticate_user! def show @passport = Passport.find_by(id: params[:id]) end def new #毎回パスポートデータが消される。 @user = User.find(params[:user_id]) @passport = @user.build_passport end
app/models/user.rb
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable has_many :posts, dependent: :destroy has_many :comments has_one :passport, dependent: :destroy
app/models/passport.rb
class Passport < ApplicationRecord belongs_to :user validates :purpose, presence: true validates :goal, presence: true mount_uploader :passport_image, PassportImageUploader end
もし、気になる点等ございましたら、コメントください。
また、情報不足ございましたら併せてコメントいただければ幸いです。
お手数ですがよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。