1

エラーメッセージの表示で壁にぶつかりました。エラー検証メッセージは表示されません。

私のユーザーショーテンプレートで:

<%= form_for([current_user, @pub_message])  do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
    <%= f.hidden_field :to_id, :value => @user.id %>
  <div class="micropost_message_field">
    <%= f.text_area :content, placeholder: "Any thoughts? Questions? Comments?", :id => 'public_message_text' %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

これは私のpub_messages#createに行きます

def create
    @pub_message = current_user.pub_messages.build
    @pub_message.to_id = params[:pub_message][:to_id]
    @pub_message.user_id = current_user.id
    @pub_message.content = params[:pub_message][:content]
    if @pub_message.save
        flash[:success ] = "Your post has been sent"
        unless params[:pub_message][:slug].nil?
            redirect_to lesson_path(params[:pub_message][:slug])
        else
            redirect_to user_path(params[:pub_message][:to_id])
        end
    else
        #redirect_to :controller => :users, :action => :show, :id => params[:pub_message][:to_id]
        #redirect_to user_path(params[:pub_message][:to_id])
        render 'users/show'
    end
end

ただし、エラー メッセージは表示されません。error_messagesがredirect_toに耐えられないという他の多くのstackoverflow投稿から読んだので、代わりにrenderを持っています。ただし、レンダリングはビューのみを表示するため、すべての変数がありません。以前の user#show アクションからすべてをコピーして貼り付けようとしましたが、それは悪い習慣のようです。それを行った場合、すべてのテンプレートが欠落しているという問題にも遭遇しました。これを機能させるには、すべてのテンプレートを共有フォルダーに移動する必要があるように見えましたが、ユーザーだけに固有のものがあるため、間違っているようです。

エラー メッセージは別の場所で正しく表示されていますが、pub_messages の何が問題なのかわかりません。

私はマイクロポストと呼ばれる非常によく似たものを持っていますが、それは機能します。

def create
    @user = current_user
    @micropost = current_user.microposts.build(params[:micropost])
    if @micropost.save
        flash[:success] = "Micropost created!"
        redirect_to root_path
    else
        @feed_items = current_user.feed.paginate(page: params[:page], per_page: 20)
        render 'static_pages/home'
    end
end

私が思う唯一の違いは、レンダリングを行うだけでなく、必要なすべてのテンプレートが共有フォルダーにあることです。これが機能する唯一の方法ですか?

4

0 に答える 0