2

Railscasts#197に続いて、js関数を呼び出すクラスをlink_toに追加する方法を知っている人はいますか?

<%= link_to_add_fields "Add Recipient", f, :recipients %>

_

function add_fields(link, association, content) {
        var new_id = new Date().getTime();
        var regexp = new RegExp("new_" + association, "g");
        $(link).parent().before(content.replace(regexp, new_id));
}

私はさまざまなことを試しましたが、うまくいくものは見つかりませんでした。同様に、私はそれが次のようなものでなければならないと思います:

<%= link_to_add_fields "Add Recipient", {f, :recipients}, :class => "button_add" %>

これにより、関数に渡される2つのオブジェクトの前後に角かっこが含まれる場合と含まれない場合があります。

undefined method `object' for #<Hash:0xaa8c320>

Ruby 1.8.7 / Rails 2.3.5

4

1 に答える 1

2

css_classパラメータでメソッドを拡張します

module ApplicationHelper

    def link_to_add_fields(name, f, association, css_class)
        new_object = f.object.class.reflect_on_association(association).klass.new
        fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
            render(association.to_s.singularize + "_fields", :f => builder)
        end
        link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")", :class => css_class)
    end
end

次に、次のようにヘルパーメソッドを呼び出すことができると思います

<%= link_to_add_fields "Add Recipient", f, :recipients, "button_add" %>

私はそれを試していませんが、このリソースは明確に話します

apidock link_to_function

于 2012-05-26T23:53:15.870 に答える