使用条件参数的Rails辅助方法

时间:2016-05-25 00:26:44

标签: ruby-on-rails refactoring erb helpers

有时在我的Rails视图中,我有一些重复的代码,因为我必须根据某些条件设置Rails辅助方法的参数。像:

<% if something %>
  <%= link_to "Target", @target, class: "target-a" %>
<% else %>
  <%= link_to "Target", @target, class: "target-b" %>
<% end %>

或其他例子:

<% if tooltip == false %>
  <%= image_tag picture.url(size), class: "img-responsive #{css_class}" %>
<% else %>
  <%= image_tag picture.url(size), class: "img-responsive #{css_class}", data: { toggle: "tooltip", placement: "bottom" }, title: "#{picture.name}" %>
<% end %>

有没有办法以更优雅的方式写这个(不重复整个帮助)?

由于

1 个答案:

答案 0 :(得分:0)

您可以隔离选项哈希中的差异,并将差异合并到共享基本选项哈希中:

$("body").on("click", "#btnSaveData", function (e) {
    // the row currently being edited has this class
    var row = $(".editing");
    var data = SiteTable.row(row).data();

    data.Site = $("#Site").val();
    data.OffsetX = $("#OffsetX").val();
    data.OffsetY = $("#OffsetY").val();
    data.DirectionName = $("#DirectionName").val();
    data.CenteringName = $("#CenteringName").val();
    data.StructureName = $("#StructureName").val();
    data.Source = $("#Source").val();

    $(row).removeClass("editing")

    //SiteTable.row(row).data(data).draw();
    SiteTable.row(row).invalidate().draw();

});

或者,更好的是,您可以使用自己的自定义帮助程序方法执行相同类型的操作。使用辅助方法是首选,因为那时你有一个方法可以测试,重用,命名(以自我文档的方式)等。