Строка для вызова метода / функции в ruby? - PullRequest
2 голосов
/ 20 февраля 2010

Я хочу сделать мой контроллер rails более гибким и попытаться создать для него Meta-foo.

У меня проблема с методом redirect_to. Могу ли я преобразовать метод edit_admin_post_path () из строки или лучше прочитать имя контроллера и передать его динамически?

это мой код для "post" в моем контроллере Admin :: Posts.

respond_to do |format|
  format.html { redirect_to(edit_admin_post_path(@object)) }
end

спасибо!

1 Ответ

5 голосов
/ 20 февраля 2010

Я не понимаю, что вы хотите сделать, однако есть несколько способов выполнить ваш запрос. Одним из них является

what = "post"
respond_to do |format|
  format.html { redirect_to(send("edit_admin_#{what}_path", @object)) }
end

Имейте в виду, edit_admin_post_path равно

url_for(:controller => "admin/posts", :action => "edit", :id => @object)

Так что вы всегда можете сделать

what = "post"
respond_to do |format|
  format.html { redirect_to(url_for(:controller => "admin/#{what.pluralize}", :action => "edit", :id => @object)) }
end

или лучше, если вы хотите динамически перенаправить на действие редактирования в соответствии с текущим контроллером, просто передайте хэш опций.

respond_to do |format|
  format.html { redirect_to(:action => "edit", :id => @object) }
end
...