我在显示错误消息时碰壁了。错误验证消息不显示。
在我的用户显示模板上:
<%= 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中存活,所以我有一个渲染。然而,由于渲染只显示视图,我错过了所有的变量。我之前尝试从我的 user#show 操作中复制和粘贴所有内容,但这似乎是一种不好的做法。如果我这样做了,我也会遇到我的所有模板都丢失的问题。似乎我必须将所有模板移动到共享文件夹才能使其正常工作,但这似乎是错误的,因为有些事情只针对用户。
我的错误消息在其他地方正确显示,但我无法弄清楚我的 pub_messages 有什么问题。
我有一个非常相似的东西,叫做 microposts,它可以工作。
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
我认为唯一的区别是它进行渲染,但在共享文件夹中也有它需要的所有模板。这是唯一可行的方法吗?