xav*_*r23 2 ruby metaprogramming ruby-on-rails
我想让我的rails控制器更灵活,并尝试为它创建一些Meta foo.
我有redirect_to方法的问题.我可以从字符串转换"edit_admin_post_path()"方法或更好地读出控制器名称并动态传递它吗?
这是我的Admin :: Posts控制器中的"post"代码.
respond_to do |format|
format.html { redirect_to(edit_admin_post_path(@object)) }
end
Run Code Online (Sandbox Code Playgroud)
谢谢!
我不明白你想做什么,但有多种方法可以实现你的要求.一个是
what = "post"
respond_to do |format|
format.html { redirect_to(send("edit_admin_#{what}_path", @object)) }
end
Run Code Online (Sandbox Code Playgroud)
请记住,edit_admin_post_path等于
url_for(:controller => "admin/posts", :action => "edit", :id => @object)
Run Code Online (Sandbox Code Playgroud)
所以你总能做到
what = "post"
respond_to do |format|
format.html { redirect_to(url_for(:controller => "admin/#{what.pluralize}", :action => "edit", :id => @object)) }
end
Run Code Online (Sandbox Code Playgroud)
或者更好,如果您想根据当前控制器动态重定向到编辑操作,只需传递选项的哈希.
respond_to do |format|
format.html { redirect_to(:action => "edit", :id => @object) }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
967 次 |
| 最近记录: |