■ 下記のモデルがあります。
class User < ApplicationRecord 親モデル has_many :intermediates has_many :care_users, through: :intermediates 子モデル class CareUser < ApplicationRecord has_many :intermediates has_many :users, through: :intermediate 中間テーブル class Intermediate < ApplicationRecord belongs_to :user belongs_to :care_user validates :user_id, presence: true validates :care_user_id, presence: true validates :confirmation, presence: true
■ 子モデルのindex.erbにて、hidden_field_tagを使用し、中間テーブルに
user_id,care_user_id,confiramtionカラムに値を飛ばします
<% @care_users.each do |care_user| %> <tr> <td> <% if care_user.image? %> <img src='<%= care_user.image %>' class="index_icon" alt="ユーザーアイコン"> <% else %> <%= image_tag src='picture-3651039_1920.png', class: "index_icon", alt: "ユーザーアイコン" %> <% end %> </td> <td><%= link_to care_user.name, care_user %></td> <td><%= care_user.department %></td> <td> <%= form_with(model: Intermediate, url: user_intermediates_path(current_user), local: true) do |form| %> <%= hidden_field_tag :user_id, current_user.id %> <%= hidden_field_tag :care_user_id, care_user.id%> <%= hidden_field_tag :confirmation, true %> <%= form.submit "確認", class: "btn btn-primary " %> <% end %> </td>
上記の状態でフォームを送信すると、中間テーブルは下記の通りになります
id: 1, user_id: 1, care_user_id: 1, confirmation: true, created_at: Sun, 20 Jun 2021 09:57:32 JST +09:00, updated_at: Sun, 20 Jun 2021 09:57:32 JST +09:00>,
■ これを踏まえた上で、条件分岐で**「current_userが押したcare_user_idのconfirmationカラムがtrueの場合は、確認ボタンをdisabledにする**」という内容を書きたいのですが、うまくいきません。
■ 私が考察し、下記のerbとコントローラーを書いたのですが、スクショのようなエラーが出てしまいます
erb
1<%= form_with(model: Intermediate, url: user_intermediates_path(current_user), local: true) do |form| %> 2 <%= hidden_field_tag :user_id, current_user.id %> 3 <%= hidden_field_tag :care_user_id, care_user.id%> 4 <%= hidden_field_tag :confirmation, true %> 5 <% if @intermediate.confirmation === false %> 6 <%= form.submit "確認", class: "btn btn-primary " %> 7 <% else %> 8 <%= form.submit "確認", class: "btn btn-disabled " %> 9 <% end % 10<% end %>
rb
1*CareUsersController 2def edit_index 3 @care_users = CareUser.page(params[:page]).per(5) 4 @care_user = CareUser.find(params[:id]) 5 @intermediate = Intermediate.where(user_id: current_user, care_user_id: params[:id]) 6 end
rb
1*IntermediatesController 2 3def create 4 @intermediate = current_user.intermediates.create(care_user_id: params[:care_user_id],confirmation: true) 5 if @intermediate.save 6 redirect_to care_users_edit_index_user_path(current_user) 7 end 8end
お忙しい中恐れ入りますが、解決策をご教授いただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー