質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

595閲覧

paramsでidを取得したいが、string型として扱われる

pure_dorayaki

総合スコア6

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/12/03 04:46

前提

paramsでidを取得したいのですが、型がstringとして取得されてしまうので、bigintにしたいです。
(いいね機能(visit)を作成しています)

発生している問題・エラーメッセージ

# ターミナル ActiveRecord::AssociationTypeMismatch (Restaurant(#99540) expected, got "17" which is an instance of String(#3520)):

該当のソースコード

rb

1ビュー 2<%= button_to '行ってない', restaurant_visits_path(restaurant.id), method: :post, class: "btn btn-sm btn-accent" %>

rb

1コントローラー 2class VisitsController < ApplicationController 3 def create 4 current_user.visit(params[:restaurant_id]) 5 end 6end

rb

1userモデル 2 3 has_many :visits, dependent: :destroy 4 has_many :visited_rst, through: :visits, source: :restaurant 5 6~ 省略 ~ 7 8 def visit(restaurant) 9 visited_rst << restaurant 10 end

試したこと

コントローラーでbinidng.pryで確かめても"restaurant_id"=>"17"} となっています。

2: def create 3: binding.pry => 4: current_user.visit(params[:restaurant_id]) 5: end [1] pry(#<VisitsController>)> params => #<ActionController::Parameters {"authenticity_token"=>"fKJNJhVfpX13u6Y_Dg9_-oYVHcOxxlx2F-Tp5-Ad87dylLlEgwccYWSUegM-ZnRSWLKqTMCVb4DaSD3jgPuZkQ", "controller"=>"visits", "action"=>"create", "restaurant_id"=>"17"} permitted: false>

調べ方もよく分からないので、ご助言いただきたいです。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ruby 3.1.2
rails 6.1.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

visited_rst << restaurantとして追加できるものは、Restaurantモデルインスタンスです。文字列でも数値でもありません。

Restaurant.findで必要なモデルを検索しましょう。

投稿2022/12/03 04:49

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pure_dorayaki

2022/12/03 06:00

ご返信ありがとうございます! コントローラーを修正し、無事うまく動きました。 お助けて頂きまして、ありがとうございます! ```visits_controller.rb def create @restaurants = Restaurant.find(params[:restaurant_id]) current_user.visit(@restaurants) redirect_to request.referer end ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問