いつもお世話になっております。
現在RailsでWebページを作成しております。
現在以下のようにコーディングしており、とあるページをrenderする前に@postsにテーブルからwhereで条件を絞ったデータを入れ、show.html.erbで使用しています。
そのページでとあるボタンを押した際にPOST処理を行い、xxxxメソッドが呼ばれるのですが、その中でテーブルにsaveを行うときにバリデーションを通り、成功すればリダイレクト、失敗でエラー内容を渡し再renderするという流れです。
現状エラー処理を行ったあと、renderをする直前で@postsを渡していないので、エラーが出ている状態です。
ここで渡す@postsにshowの際に渡した@postsを再利用したいと考えているのですが可能でしょうか。
その場合、whereの検索条件をすべて渡し
@posts = Post.where(パラメータによっていろいろ条件で絞る)
をもう一度書くような流れとなるのでしょうか。
このページはいろいろの場所でpost処理を行うため、エラーバリデーション後にこの処理を多く書かないといけないため、かんたんに以前にshowした際の@postsを再利用できたら良いなと考えていました。
参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。
ruby
1 2def show 3 @posts = Post.where(パラメータによっていろいろ条件で絞る) 4 render 'homes/show' 5end 6 7def xxxx 8 @aaaa = XXXX.new(name: xxx, yyy: params[:yyy], zzz: params[:zzz]) 9 if @aaaa.save 10 redirect_to controller: 'homes', action: 'show' 11 else 12 # エラー処理 13 # showで渡したものと同条件の@postsをここで使いたい 14 # post時に検索条件と同じパラメータを渡して再び以下のようにしなければならないのか 15 # @posts = Post.where(パラメータによっていろいろ条件で絞る) 16 render 'homes/show' 17 end 18end 19 20 21# show.html.erb 22<% @posts.each do |post| %> 23 いろいろ処理 24<% end %>
環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.6.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/26 13:40
2019/11/26 22:48
2019/11/27 01:27