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

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

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

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

Q&A

解決済

1回答

451閲覧

パーシャルファイルの呼び出しについて

Giants

総合スコア11

Ruby on Rails 5

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

0グッド

1クリップ

投稿2023/01/21 06:02

前提

パーシャルファイル内でインスタンス変数を使用していたが、インスタンス変数は使用しない方がいいとのご指摘を受け、ローカルを削除したところ、エラーになったため調べたところ、呼び出し側で「local」を指定する必要があるという記事を見つけ、その記述方法を教えて頂ければ幸いでございます。

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

app/views/relationships/_follow_button.html.erb(変更前)

1<% if current_user.following?(user) %> 2 <%= form_with model: @relationship, url: relationship_path, method: :delete, local: true do |f| %> 3     省略 4   <%= form_with model: @set_relationship, url: relationships_path, local: true do |f| %> 5     省略

該当のソースコード

app/views/relationships/_follow_button.html.erb(変更後)

1<% if current_user.following?(user) %> 2 <%= form_with model: relationship, url: relationship_path, method: :delete, local: true do |f| %> 3     省略 4   <%= form_with model: set_relationship, url: relationships_path, local: true do |f| %> 5     省略 6

app/views/events/show.html.erb(パーシャルファイル指定箇所)

1<div class="d-flex align-items-center gap-3 mb-3"> 2 <%= image_tag @event.user.decorate.avatar, class: 'rounded-circle avatar-lg' %> 3 <%= link_to @event.user.name, user_path, class: 'nav-link' %> 4 <ul class="list-unstyled"> 5 ** <%= render 'relationships/follow_button' %> ** 6 </ul> 7</div>

app/controllers/relationships_controller.rb

1class RelationshipsController < ApplicationController 2 before_action :set_user, only: [:create, :destroy] 3 4 def create 5 following = current_user.follow(@user) 6 if following.save 7 flash[:success] = "ユーザーをフォローしました" 8 redirect_to user_path 9 else 10 flash.now[:alert] = "ユーザーのフォローに失敗しました" 11 redirect_to user_path 12 end 13 end 14 15 def destroy 16 following = current_user.unfollow(@user) 17 if following.destroy 18 flash[:success] = "ユーザーのフォローを解除しました" 19 redirect_to user_path 20 else 21 flash.now[:alert] = "ユーザーのフォロー解除に失敗しました" 22 redirect_to user_path 23 end 24 end 25 26 private 27 28 def set_user 29 @user = User.find(params[:relationship][:follow_id]) 30 end 31 32end

試したこと

お手数をお掛けしますが、ご指導のほどお願い致します。

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

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

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

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

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

yuma.inaura

2023/01/21 06:14

その参考記事を載せておきませんか?
yuma.inaura

2023/01/21 06:14

ローカルを削除ってどんなことをしたんでしょう?
Giants

2023/01/21 06:23

ご返信ありがとうございます! すみません。@を抜いたということになります。 わかりずらい表現をしてしまい、申し訳ございませんでした。
guest

回答1

0

ベストアンサー

partialに渡すlocalsはこんなやつじゃないですか

local: true とはは全く別物ですね

rb

1= render 'shared/item_header', locals: { item: @item }

投稿2023/01/21 07:19

yuma.inaura

総合スコア1451

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問