2
我想在驗證失敗的用戶消息傳遞時維護一個漂亮的URL。使用嵌套路徑呈現錯誤
我有一個路由文件看起來像以下:
# For logged users convenience
# example.com/messages
# instead of: example.com/users/:user_id/messages
map.resources :messages
# For everyone else
map.resources :users do |p|
p.resources :messages
end
所以new_user_message_path(@user)回報:
/users/:user_id/messages/new
消息的new.erb觀點產生正確的代碼:
<form action="https://stackoverflow.com/users/:user_id/messages" .........
當驗證失敗s時,顯示形式錯誤,但呈現錯誤的行動:
<form action="/messages" .........
所以第二次在用戶提交表單中的「創建」方法無法找到USER_ID
這裏是我的控制方法:
def new
@user = User.find(params[:user_id])
@message = @user.messages.build
end
def create
@user = User.find(params[:user_id])
@message = @user.messages.new(params[:message])
if @message.save
flash[:notice] = 'Message saved'
redirect_to user_url(@user)
else
render :action => "new" # Here is the problem I guess
end
end
我的表單視圖:
<% form_for [@user, @message] do |f| %>
<%= f.error_messages %>
Name:<%= f.text_field :name %>
Email:<%= f.text_field :email %>
Message:<%= f.text_area :body, :rows => 3 %>
<%= f.submit 'Send' %>
<% end %>
我不明白你想要做什麼。通常情況下,消息在其他視圖中以其自己的路由呈現,因此沒有任何理由擁有消息路由,因此沒有理由需要該路由的漂亮URL。 – 2011-04-15 04:35:40