今天我才明白,我有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