如何在rails中创建方法数组

时间:2015-06-10 16:25:42

标签: ruby-on-rails

def id_attachment_require_upload?
    !object.id_attachment?
end

...

def work_attachment_require_upload?
    !object.work_attachment?
end

我希望如下所示。

array = %w(id address work)
array.each do |a|
    def #{a}_attachment_require_upload?
        !object.#{a}_attachment?
    end
end

我有没有办法在rails中自动创建一系列方法,以免我从冗余工作中解脱出来。

2 个答案:

答案 0 :(得分:3)

   $(document).ready(function () {
    var text_max = 160;
    $('#textarea_feedback').html(text_max + ' characters remaining');
    $('#txtMessage').keyup(function () {
        var text_length = $('#txtMessage').val().length;
        var text_remaining = text_max - text_length;
        $('#textarea_feedback').html(text_remaining + ' characters remaining');
    });


    $('#send').click(function (e) {
        if ($('#txtSMSMessage').val().trim()) {
            e.preventDefault();
            $.ajax({
                type: "POST",
                data: $('form#Composer').serialize(),
                url: '/MyController/MyAction',
                success: function (data) {
                    alert('Sent');
                    $('#Composer').closest("div.ui-dialog-content").dialog("close");
                },
                error: function (a, b, c) {
                    $("#Composer").unblock();
                    alert(b);
                }
            });
            //$('#Composer').closest("div.ui-dialog-content").dialog("destroy");
        }
    });

    //var dialog = $('#Composer').closest("div.ui-dialog-content").dialog();
    //console.debug(dialog);
    //dialog.on("dialogbeforeclose", function (event, ui) {
    //    dialog.dialog('destroy')
    //});

});

答案 1 :(得分:1)

Arup的回答看起来像是要走的路,但我不确定object.#{a}_attachment?是否有效。如果确实如此,那我今天就学到了新东西。您也可以使用public_send

array = %w[id address work]
array.each do |a|
  define_method "#{a}_attachment_require_upload?" do
    !object.public_send("#{a}_attachment?")
  end
end