Extract component to render a date range
Note we're using the `call` method (which is equivalent to adding an ERB file) because we were getting an error calling `render` from the `dates` method: ``` ActionView::Base#lookup_context delegated to view_renderer.lookup_context, but view_renderer is nil: ``` It might be because we aren't rendering the `Adming::Budgets::DurationComponent` but just calling one method, and so there's no view context in this case.
This commit is contained in:
@@ -6,7 +6,7 @@ class Admin::Budgets::DurationComponent < ApplicationComponent
|
|||||||
end
|
end
|
||||||
|
|
||||||
def dates
|
def dates
|
||||||
safe_join([formatted_start_date, "-", formatted_end_date], " ")
|
Admin::DateRangeComponent.new(start_time, end_time).call
|
||||||
end
|
end
|
||||||
|
|
||||||
def duration
|
def duration
|
||||||
@@ -15,15 +15,11 @@ class Admin::Budgets::DurationComponent < ApplicationComponent
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def formatted_start_date
|
def start_time
|
||||||
formatted_date(durable.starts_at) if durable.starts_at.present?
|
durable.starts_at
|
||||||
end
|
end
|
||||||
|
|
||||||
def formatted_end_date
|
def end_time
|
||||||
formatted_date(durable.ends_at - 1.second) if durable.ends_at.present?
|
durable.ends_at - 1.second if durable.ends_at.present?
|
||||||
end
|
|
||||||
|
|
||||||
def formatted_date(time)
|
|
||||||
time_tag(time, format: :short_datetime)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
26
app/components/admin/date_range_component.rb
Normal file
26
app/components/admin/date_range_component.rb
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
class Admin::DateRangeComponent < ApplicationComponent
|
||||||
|
attr_reader :start_time, :end_time
|
||||||
|
|
||||||
|
def initialize(start_time, end_time)
|
||||||
|
@start_time = start_time
|
||||||
|
@end_time = end_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
safe_join([formatted_start_time, "-", formatted_end_time], " ")
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def formatted_start_time
|
||||||
|
formatted_date(start_time) if start_time.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def formatted_end_time
|
||||||
|
formatted_date(end_time) if end_time.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def formatted_date(time)
|
||||||
|
time_tag(time, format: :short_datetime)
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user