現在投稿アプリを作っており以前にタグ機能を実装いたしました。
そこで新規投稿画面でタグを選択できるように多対多でmodelを作成いたしました。
新規投稿画面では、問題なくタグが表示されているのですが、投稿確認画面で文字列が繋がって表示されてしまい困っております。
以下のサイトを参考に実装していきましたが、思ったようにいきませんでした。model設計もサイトと同じです。
リンク内容
カテゴリの表示にはeach文を使用しております。
confirm.html.slim .microposts_item_detail .microposts_item_title | カテゴリ .microposts_item_contents - @post.categories.each do |category| = category.name .line = form_for :post, url: new_post_path do |f| = f.hidden_field :area = f.hidden_field :station = f.hidden_field :place_name = f.hidden_field :post_photo_cache = f.hidden_field :shop_name = f.hidden_field :street_address = f.hidden_field :time = f.hidden_field :regular_holiday = f.hidden_field :url = f.hidden_field :category_ids div[style="text-align: center;"] = f.submit "入力画面に戻る", class: "btn-back" = form_for :post, url: posts_path do |f| = f.hidden_field :area = f.hidden_field :station = f.hidden_field :place_name = f.hidden_field :post_photo_cache = f.hidden_field :shop_name = f.hidden_field :street_address = f.hidden_field :time = f.hidden_field :regular_holiday = f.hidden_field :url = f.hidden_field :category_ids div[style="text-align: center;"] = f.submit "確認へ進む", class: "btn btn-square"
each文を区切ればいいと思ったのですが、それだと今後に影響してしまうと考えたので別の方法を模索しています。
また新規投稿画面では以下のコードで実装しております(一部抜粋
new.html.slim .form-group = f.label :category, 'カテゴリ', class: "item-tag" = f.collection_check_boxes(:category_ids, Category.all, :id, :name) do |category| .item_tag = category.label do = category.check_box .item-span span = category.text div[style="text-align: center;"] = f.submit "確認へ進む", class: "btn-square"
投稿確認画面でも同じように表示したいです。また投稿完了した後の投稿ページでも同じように表示したいのでわかるかたがいらっしゃいましたご教示お願いします。
posts.controller.rb class PostsController < ApplicationController before_action :authenticate_user! def index @post = Post.limit(4).order('created_at DESC') end def new @post = Post.new end def show end def confirm @post = Post.new(post_params) return if @post.valid? flash.now[:alert] = '入力に不備がありました。' render :new end def back @post = Post.new(post_params) render :new end def create @post = Post.new(post_params) if @post.save redirect_to root_path flash[:notice] = "投稿が完了しました。" else render :new end end private def post_params params.require(:post).permit(:post_photo, :post_photo_cache, :place_name, :area, :street_address, :time, :regular_holiday, :url, :station, :shop_name, category_ids: []).merge(user_id: current_user.id) end end
あなたの回答
tips
プレビュー