Asked Jan 5th, 9:23 AM 92 0 3
  • 92 0 3
0

Render action trong Rails controller

Share
  • 92 0 3

E có 1 routes dạng như thế này:

get "/:username/edit" => "users#edit", as: :edit_user

Khi update user lỗi và muốn render lại action edit với đúng url là /username/edit nhưng hiện tại nó sẽ nhận action dạng resful /users/1

  def update
    if current_user.update_attributes(user_param)
      redirect_to show_user_path(username: current_user.username)
    else
      render :edit
    end
  end

Ai có kinh nghiệm về vấn đề này chỉ giúp e với ạ, e xin cảm ơn.

3 ANSWERS


Answered Jan 6th, 1:39 AM
Accepted
+5

Có 2 cách:

  • redirect đến /username/edit. Sẽ phải lưu tại thời params vào session để render lại form
  • để luôn URL của action update là POST /username/edit. Cách này sẽ phá vỡ quy tắc RESTFUL
Share
Answered Jan 5th, 10:21 AM
0

Không hiểu bạn muốn hỏi điều gì. Làm gì có render action, chỉ có render view thôi. Làm như bạn nó sẽ render view của action edit nhưng URL không thay đổi, muốn quay trở lại trang cũ với URL cũ thì sử dụng redirect_to :back

Share
Answered Jan 6th, 2:06 AM
0

Bạn thử dùng render template: "username/edit" xem có dc k =))

Share