Yêu cầu thg 1 5, 2019 9:23 SA 321 0 3
  • 321 0 3
0

Render action trong Rails controller

Chia sẻ
  • 321 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 CÂU TRẢ LỜI


Đã trả lời thg 1 6, 2019 1:39 SA
Đã được chấp nhận
+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
Chia sẻ
Đã trả lời thg 1 5, 2019 10:21 SA
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

Chia sẻ
Đã trả lời thg 1 6, 2019 2:06 SA
0

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

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí