我的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