2012-09-18 26 views
17

Tôi có đoạn mã này:"Không con đường phù hợp với [POST]" khi thay đổi link_to để button_to

<%= link_to "New User", new_user_path, :class => "button" %><br /> 

mà hoạt động tốt, nhưng khi tôi thay đổi nó để,

<%= button_to "New User", new_user_path, :class => "button" %><br /> 

tôi nhận được lỗi này

Không trận tuyến đường [POST] "/ người dùng/mới"

Bất kỳ trợ giúp nào đều sẽ được đánh giá cao.

Trả lời

29

Jesus Rodriguez là đúng về POST và GET, nhưng nếu bạn thực sự cần nút bạn có thể chỉ đơn giản là ghi đè phương thức mặc định:

<%= button_to "New User", new_user_path, :class => "button", :method => :get %> 
+0

hoạt động tốt! thanks dude :) –

19

"link_to" đang tìm kiếm /người dùng/mới sử dụng GET.

Các "button_to" đang tìm kiếm một /người dùng/mới sử dụng POST

Nếu bạn tạo các tuyến đường cho một bộ điều khiển sử dụng:

resources :user 

Theo mặc định, /người dùng/mớiNHẬN và không POST vì vậy, dòng thứ hai không tìm thấy bất kỳ tuyến đường nào.

Nếu bạn đang nghĩ thay đổi hành động đó thành POST Tôi nghĩ bạn nên quên điều đó.

3

Thay vì buộc button_to sử dụng phương pháp không mặc định, bạn cũng có thể gửi lớp tới link_to.

<%= link_to "New User", new_user_path, :class => "button" %> 
+0

Để thêm vào đó, bạn có thể thêm các lớp vào đó để làm cho nó "trông" giống như một nút (như câu trả lời cho thấy ở trên). Trong trường hợp của tôi, tôi đang sử dụng bootstrap và đã làm như sau '<% = link_to" Người dùng mới ", new_user_path,: class =>" btn btn-default "%>' –

Các vấn đề liên quan