給定模型時,如何生成輸入的id
屬性?舉例來說,如果我有Person
與first_name
屬性的模式,形式助手打印出與這個網站的文本框:使用ActiveRecord模型生成輸入ID
<input type="text" id="person_first_name" />
我怎麼能產生person_first_name
從代碼中的其他一些地方(如在控制器或某個地方)?
給定模型時,如何生成輸入的id
屬性?舉例來說,如果我有Person
與first_name
屬性的模式,形式助手打印出與這個網站的文本框:使用ActiveRecord模型生成輸入ID
<input type="text" id="person_first_name" />
我怎麼能產生person_first_name
從代碼中的其他一些地方(如在控制器或某個地方)?
我最終跟隨了中微子的建議,並且看了一下軌道代碼。我最終在InstanceTag
課中抽出了一些私人方法,並稍稍移動它們。我猴子修補這個到ActiveRecord::Base
,這可能不是最好的解決方案,但它現在的工作原理:
def create_tag_id(method_name)
object_name = ActionController::RecordIdentifier.singular_class_name(self)
"#{sanitized_object_name(object_name)}_#{sanitized_method_name(method_name.to_s)}"
end
private
def sanitized_object_name(object_name)
object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
end
def sanitized_method_name(method_name)
method_name.sub(/\?$/,"")
end
我做了同樣的事情,但不是將這些方法放入模型中,而是替換並擴展了表單構建器:http://stackoverflow.com/questions/4819696/how-do-you-get-the-rails-generated- ID對的一外形元件換基準在-javascri/5432558#5432558 – ilpoldo 2011-03-25 12:46:18