mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Generate indexed names in input even when objects are not persisted
When you ask to generate multiple nested inputs using: field_for('comments[]', Comment.new) do |c| c.text_field :body Rails should generated the names like `post[comments][][body]`. To make sure we don't have regression the fake models now use the same implementation of `#to_param` as `ActiveRecord::Base` Fixes #26942
This commit is contained in:
parent
f8e040957b
commit
530e5ff910
2 changed files with 17 additions and 6 deletions
|
@ -16,7 +16,14 @@ module ActionView
|
|||
@skip_default_ids = options.delete(:skip_default_ids)
|
||||
@allow_method_names_outside_object = options.delete(:allow_method_names_outside_object)
|
||||
@options = options
|
||||
@auto_index = Regexp.last_match ? retrieve_autoindex(Regexp.last_match.pre_match) : nil
|
||||
|
||||
if Regexp.last_match
|
||||
@generate_indexed_names = true
|
||||
@auto_index = retrieve_autoindex(Regexp.last_match.pre_match)
|
||||
else
|
||||
@generate_indexed_names = false
|
||||
@auto_index = nil
|
||||
end
|
||||
end
|
||||
|
||||
# This is what child classes implement.
|
||||
|
@ -167,7 +174,11 @@ module ActionView
|
|||
end
|
||||
|
||||
def name_and_id_index(options)
|
||||
options.key?("index") ? options.delete("index") || "" : @auto_index
|
||||
if options.key?("index")
|
||||
options.delete("index") || ""
|
||||
elsif @generate_indexed_names
|
||||
@auto_index || ""
|
||||
end
|
||||
end
|
||||
|
||||
def skip_default_ids?
|
||||
|
|
|
@ -80,7 +80,7 @@ class Comment
|
|||
def to_key; id ? [id] : nil end
|
||||
def save; @id = 1; @post_id = 1 end
|
||||
def persisted?; @id.present? end
|
||||
def to_param; @id.to_s; end
|
||||
def to_param; @id && @id.to_s; end
|
||||
def name
|
||||
@id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
|
||||
end
|
||||
|
@ -101,7 +101,7 @@ class Tag
|
|||
def to_key; id ? [id] : nil end
|
||||
def save; @id = 1; @post_id = 1 end
|
||||
def persisted?; @id.present? end
|
||||
def to_param; @id; end
|
||||
def to_param; @id && @id.to_s; end
|
||||
def value
|
||||
@id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
|
||||
end
|
||||
|
@ -120,7 +120,7 @@ class CommentRelevance
|
|||
def to_key; id ? [id] : nil end
|
||||
def save; @id = 1; @comment_id = 1 end
|
||||
def persisted?; @id.present? end
|
||||
def to_param; @id; end
|
||||
def to_param; @id && @id.to_s; end
|
||||
def value
|
||||
@id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
|
||||
end
|
||||
|
@ -136,7 +136,7 @@ class TagRelevance
|
|||
def to_key; id ? [id] : nil end
|
||||
def save; @id = 1; @tag_id = 1 end
|
||||
def persisted?; @id.present? end
|
||||
def to_param; @id; end
|
||||
def to_param; @id && @id.to_s; end
|
||||
def value
|
||||
@id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue