我的Rails应用程序,我的错误信息无法正确显示。我认为原因是因为验证失败,我的控制器做了一个重定向,而不是渲染。然而,即时通讯有麻烦渲染。我所有的变数似乎都没有了。例如在我的pub_messages#创建我有...轨呈现遗漏变量
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"
redirect_to user_path(params[:pub_message][:to_id])
else
render 'users/show'
end
end
^(在一个侧面说明,即时通讯maually节约每一由于一些安全问题的属性,所以我没有做:to_id attr_accessible)
但回点,当我这样做使“用户/秀”,现在看来似乎无法找到任何我的变量。它进入我的用户显示视图,抱怨......
undefined method `name' for nil:NilClass
1: <% provide(:title, @user.name) %>
然而,如果去了我的用户#显示行动,我宣布@user。
def show
@user = User.find(params[:id])
@current_user = current_user
if user_signed_in?
@message = current_user.messages.build
@pub_message = current_user.pub_messages.build
end
@feed_items = @user.feed.paginate(page: params[:page], per_page: 20)
end
我错过了还是做错了什么? 谢谢
更新:所以它看起来好像没有去显示操作。我怎么能解决不显示的错误消息?如果我做了重定向,是不是会导致浏览器立即请求一个新的页面?因此我的错误信息永远不会出现?
更新2:所以...我实际上不是来自模型的'新'页面,而是来自用户展示模板。而在模板中,我有以下
<%= 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: "Comments?", :id => 'public_message_text' %>
</div>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
这是对象是越来越建成,并最终进入到我的pub_messages#创建。如果我做重新初始化所有的变量,我需要将所有的模板中的共享文件夹,以及因为它抱怨说。
还是有更好的方式来做到这一点?也许像渲染'新',然后重定向到用户#show?
哦,我编辑后。不重定向不显示失败的验证? – Sasha
重定向确实显示Flash通知和错误。 – Anil
哦,真的吗?嗯,那么它一定是从别的东西... – Sasha