@@ -6,14 +6,7 @@ def index(list_name: nil, yyyymm: nil, q: nil, page: nil)
66 if list_name
77 @list = List . find_by_name list_name
88
9- @yyyymms = Message . where ( list_id : @list ) . order ( 'yyyymm' ) . pluck ( Arel . sql "distinct to_char(published_at, 'YYYYMM') as yyyymm" )
10- @yyyymm = yyyymm || @yyyymms . last
11-
12- root_query = Message . where ( list_id : @list , parent_id : nil ) . where ( "to_char(published_at, 'YYYYMM') = ?" , @yyyymm ) . order ( :id )
13- messages = Message . with_recursive ( parent_and_children : [ root_query , Message . joins ( 'inner join parent_and_children on messages.parent_id = parent_and_children.id' ) ] )
14- . joins ( 'inner join parent_and_children on parent_and_children.id = messages.id' )
15-
16- @messages = compose_tree ( messages )
9+ render_threads yyyymm : yyyymm
1710 elsif q
1811 search q , page
1912
@@ -29,10 +22,28 @@ def index(list_name: nil, yyyymm: nil, q: nil, page: nil)
2922 def show ( list_name :, list_seq :)
3023 @list = List . find_by_name ( list_name )
3124 @message = Message . find_by! ( list_id : @list , list_seq : list_seq )
25+
26+ # If this is a turbo frame request, just render the message
27+ return if turbo_frame_request?
28+
29+ render_threads yyyymm : @message . published_at . strftime ( '%Y%m' )
3230 end
3331
3432 private
3533
34+ def render_threads ( yyyymm : nil )
35+ @yyyymms = Message . where ( list_id : @list ) . order ( 'yyyymm' ) . pluck ( Arel . sql "distinct to_char(published_at, 'YYYYMM') as yyyymm" )
36+ @yyyymm = yyyymm || @yyyymms . last
37+
38+ root_query = Message . where ( list_id : @list , parent_id : nil ) . where ( "to_char(published_at, 'YYYYMM') = ?" , @yyyymm ) . order ( :id )
39+ messages = Message . with_recursive ( parent_and_children : [ root_query , Message . joins ( 'inner join parent_and_children on messages.parent_id = parent_and_children.id' ) ] )
40+ . joins ( 'inner join parent_and_children on parent_and_children.id = messages.id' )
41+
42+ @messages = compose_tree ( messages )
43+
44+ render :index
45+ end
46+
3647 def get_list_ids ( params )
3748 list_ids = [ ]
3849 [ 'ruby-talk' , 'ruby-core' , 'ruby-list' , 'ruby-dev' ] . each do |name |
0 commit comments