2013-02-28 69 views
1

如果我们使用form_for进行记录,表单标签内的所有输入标签将自动包含一个属性id,其值为id="post_3_title",id="post_3_content"如何从form_for中的记录获取标签ID?

在我的情况下,我想要获得这些名称来动态创建JavaScript代码。我想知道有没有办法做到这一点。有任何想法吗?

感谢您的帮助。

+0

你可以给该字段定制id并且可以将它用于你的javascript代码 – 2013-02-28 05:14:15

+0

@DevR谢谢,你的解决方案可以工作,这就是我以简单形式使用的方式,但是在嵌套形式中,我认为它可以是小糟糕。 – 2013-02-28 06:21:58

回答

1

我在actionpack-3.2.12/lib/action_view/helpers/form_helper.rb:1218找到了源代码。

def tag_name_with_index(index) 
     "#{@object_name}[#{index}][#{sanitized_method_name}]" 
    end 

    def tag_id 
     "#{sanitized_object_name}_#{sanitized_method_name}" 
    end 

    def tag_id_with_index(index) 
     "#{sanitized_object_name}_#{index}_#{sanitized_method_name}" 
    end 

    def sanitized_object_name 
     @sanitized_object_name ||= @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "") 
    end 

    def sanitized_method_name 
     @sanitized_method_name ||= @method_name.sub(/\?$/,"") 
    end 

看来我们可以很好地利用它们,但是它们都是私有方法。我认为另一个解决方案是实施这样的辅助方法。