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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

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

Ruby on Rails 6

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

Q&A

解決済

1回答

646閲覧

no implicit conversion of false into Hash エラーを解決したい。

pi-nattu

総合スコア61

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

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

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/11/02 13:12

前提

ショッピングサイトを課題で作成しています。
今回顧客側で退会機能の作成をしています。
退会するかしないかを選び、情報を送る際にhiddenn_fieldを使おうと思っているのですがその際にエラーが出てしまいました。

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

no implicit conversion of false into Hash

翻訳すると【false から Hash への暗黙的な変換はありません】という意味らしいのですが、これは変換できないという意味でしょうか...?

該当のソースコード

RubyonRails

1<%= form_with model: @customer, url:customers_withdraw_path, method: :patch do |f| %> 2 <%= f.submit "退会しない" %> 3 <%= f.hidden_field :is_deleted, false %>#ここでエラーが出ている 4 <%= f.submit "退会する" %> 5 <%= f.hidden_field :is_deleted, true %> 6<% end %> 7

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

RubyonRails

1class Public::CustomersController < ApplicationController 2 3 def show 4 @customer = current_customer 5 end 6 7 def update 8 @customer = current_customer 9 @customer.update(customer_params) 10 redirect_to customers_my_page_path 11 end 12 13 def edit 14 @customer = current_customer 15 end 16 17 def withdraw 18 @customer = current_customer 19 @customer.update(is_deleted: false) 20 redirect_to 21 end 22 23 def unsubscribe 24 end 25 26 private 27 def customer_params 28 params.permit(:last_name, :first_name, :last_name_kana, 29 :first_name_kana, :telephone_number, :postal_code, :address, 30 :email, :password) 31 end 32end

RubyonRails

1class Customer < ApplicationRecord 234 #falseなら有効会員、trueなら退会済みの無効会員 5 enum is_deleted: { false: false, true: true } 678end 9

RubyonRails

1<h3>本当に退会しますか?</h3> 2<p>退会すると、会員情報や<br>これまでの購入履歴が閲覧できなくなります。<br> 3退会する場合は、「退会する」をクリックしてください。</p> 4 5<%#= link_to "退会しない", customers_infomation_edit_path %> 6<%#= link_to "退会する", customers_withdraw_path, method: :patch %> 7#↑は以前作ったものですが、念のため残しています。ボタンとして実装したいので 8今回は↓にあるもので実装を考えています。 9 10<%= form_with model: @customer, url:customers_withdraw_path, method: :patch do |f| %> 11 <%= f.submit "退会しない" %> 12 <%= f.hidden_field :is_deleted, false %> 13 <%= f.submit "退会する" %> 14 <%= f.hidden_field :is_deleted, true %>

RubyonRails

1 customers_my_page GET /customers/my_page(.:format) public/customers#show 2 customers_infomation_edit GET /customers/infomation/edit(.:format) public/customers#edit 3 customers_infomation_up_date PATCH /customers/infomation/up_date(.:format) public/customers#update 4 customers_unsubscribe GET /customers/unsubscribe(.:format) public/customers#unsubscribe 5 customers_withdraw PATCH /customers/withdraw(.:format) public/customers#withdraw 6

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

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

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

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

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

winterboum

2022/11/02 22:44

エラーメッセージ は編集しないで全文載せてください
guest

回答1

0

ベストアンサー

hidden_field の2つ目の引数はHash です hidden_field(method, options = {})`

何が false なのでしょう。 OPTION名: false の様にする必要があります

投稿2022/11/02 22:48

winterboum

総合スコア23347

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

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

pi-nattu

2022/11/03 11:12 編集

返信が遅くなり申し訳ありません。 ありがとうございます、無事ボタンとして実装できました!ベストアンサーにさせていただきます。 エラーメッセージを編集したつもりはなかったのですが、ほかの文章を載せるのを忘れてしまいました。気を付けます。 至らない点もありましたが、教えてくださりありがとうございました。 falseについて 説明が抜けていて申し訳なかったのですが、顧客のcustomerモデルのis_deletedメソッドでboolean型を用いてfalse=有効会員、ture=退会済み会員とし、ログインする前に以下の記述で有効かどうかを判定しています。 class Public::SessionsController < Devise::SessionsController #ログインのcreateアクションの前に顧客が退会しているか確認 before_action :customer_state, only: [:create] protected def customer_state #入力されたemailからアカウントを1件特定 @customer = Customer.find_by(email: params[:customer][:email]) return if !@customer #特定したパスワードとログイン画面のが一致しているか確認 if @customer.valid_password?(params[:customer][:password]) && @customer.is_deleted flash[:error] = "退会済みです。" redirect_to new_customer_registration_path end end end
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問