错误验证未显示在rails中

时间:2012-06-04 23:13:35

标签: ruby-on-rails redirect render

我在显示错误消息时遇到了障碍。错误验证消息不会显示。

在我的用户展示模板上:

<%= 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

然而它不会'显示错误消息。我从其他一些stackoverflow帖子中读到了error_messages不能在redirect_to中存活,所以我有一个渲染。但是,由于渲染只显示视图,我缺少所有变量。我试过从我的用户#show action中复制并粘贴所有内容,但这似乎是一种不好的做法。如果我这样做,我也遇到了我所有模板都缺失的问题。似乎我必须将所有模板移动到共享文件夹才能使其正常工作,但这似乎是错误的,因为有些事情只针对用户。

我的错误消息正在其他地方正确显示,但我无法弄清楚我的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

我认为唯一的区别是它可以进行渲染,但也拥有共享文件夹中所需的所有模板。这是唯一的方法吗?

0 个答案:

没有答案