2012-03-24 27 views
7

Tôi đang cố gắng chuyển hướng đến một vị trí dựa trên thông số trên biểu mẫu đã gửi. Nếu params [: route] = group, tôi muốn chuyển hướng đến groups_path. Tôi đã thử phương pháp sau đây để chuyển hướng nhưng rõ ràng là đủ các group_path là một biến và không phải là một chuỗi. Làm thế nào tôi có thể chuyển hướng dựa trên param?Redirect_to với đường dẫn chuỗi

redirect_to "#{params[:route]}s_path" 

Chỉnh sửa: nhận ra rằng tôi có thể chuyển hướng đến đường dẫn thực nhưng điều này có vẻ không giống như cách thực hiện.

redirect_to "/#{params[:route]}s" 

Trả lời

12
redirect_to send("#{params[:route].pluralize}_path") 

Nhưng tôi thà viết một wrapper-helper trở helper url thích hợp dựa trên giá trị params[:route]. params[:route] có khả năng có thể có bất kỳ giá trị nào và bạn có thể muốn giải cứu trong những trường hợp này.

+0

+ 1, câu trả lời hoàn hảo .. –

+0

Tôi đồng ý, nhấn móng trên đầu Được tính là một vấn đề nếu ai đó cố gắng gửi chính mình đến một đường dẫn khác, họ sẽ bị từ chối xác thực hoặc truy cập trang 404. Tôi làm cho nó trở thành một người trợ giúp? – BookOfGreg

+2

sẽ tốt hơn nếu bạn sử dụng redirect_to send ("# {params [: route] .pluralize} _path") để bạn có được plura chính xác lization – meredrica

2

gửi có thể các cuộc gọi phương pháp tư nhân, do đó tốt hơn là public_send

và thay vào đó "# {params [: tuyến đường]} s" sử dụng "# {params [: tuyến đường] .pluralize}

redirect_to public_send("#{params[:route].pluralize}_path") 
Các vấn đề liên quan