2013-08-02 25 views
0

今天我才明白,我有5点不同的意见链接帮手所有控制器的动作

<%= link_to t(:edit, scope: [:admin, :actions :model_name]), edit_admin_model_name_path(model_name)), class: "icon-edit" %> 
<%= link_to t(:delete, scope: [:admin, :actions :model_name]), admin_model_name_path(model_name)),method: :delete, class: "icon-edit", data: { confirm: t(:confirm, scope: [:admin, :confirmation, eval(":#{model}s")]) %> 

这样的链接和我的代码看起来真的很可怕。所以我想为这些链接创建一个辅助方法。我认为,它应该是这样的:

def link_to_edit(model) 
    link_to t(:edit, scope: [:admin, :actions :model_name]), edit_admin_METHOD_I_NEED(model)_path(METHOD_I_NEED(model)), class: "icon-edit" 
    end 
    def link_to_delete(model) 
    link_to t(:delete, scope: [:admin, :actions :model_name]), admin_METHOD_I_NEED(model)_path(METHOD_I_NEED(model))), method: :delete, class: "icon-delete", data: { confirm: t(:confirm, scope: [:admin, :confirmation, ":#{model}s"]) } 
    end 

所以,我需要的是相反#{}红宝石方法。

做Ruby有这样的方法,还是应该以其他方式做到这一点?

答:

我结合了两种答案:

def link_to_delete(model) 
    link_to t(:delete, scope: [:admin, :actions, model.pluralize.to_sym]), url_for(controller: model.pluralize.to_sym,...), method: :delete, class: "icon-delete", data: { confirm: t(:confirm, scope: [:admin, :confirmation, model.pluralize.to_sym) } 
end 

回答

0

为什么不只是做model.pluralize.to_sym,而不是":#{model}s"

例子:

1.9.2-p290 :005 > "person".pluralize.to_sym 
=> :people 
相关问题