2

I want to make my rails controller more flexible and try to create some Meta foo for it.

I have a problem with the redirect_to method. Can I convert the "edit_admin_post_path()" method from a string or better read out the controller name and pass it dynamicly?

this is my code for "post" in my Admin::Posts controller.

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

thanks!

1 Answer 1

5

I don't understand what you want to do, however there are multiple ways to achieve your request. One is

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

Keep in mind, edit_admin_post_path is equal to

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

So you can always do

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

or better, if you want to dynamically redirect to the edit action according to current controller, just pass the hash of options.

respond_to do |format|
  format.html { redirect_to(:action => "edit", :id => @object) }
end
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.