Skip to content

Commit 3ecf976

Browse files
authored
Merge pull request #80 from amatsuda/action_args
Saner and cleaner actions with action_args
2 parents 2b53937 + 1ff1d97 commit 3ecf976

File tree

4 files changed

+18
-12
lines changed

4 files changed

+18
-12
lines changed

.rubocop.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@ Layout:
1313

1414
Metrics:
1515
Enabled: false
16+
17+
Naming/MethodParameterName:
18+
Enabled: false

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ gem "stimulus-rails"
2626

2727
gem 'tailwindcss-rails'
2828

29+
gem 'action_args'
30+
2931
gem 'active_decorator'
3032

3133
# Use Redis adapter to run Action Cable in production

Gemfile.lock

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
GEM
22
remote: https://rubygems.org/
33
specs:
4+
action_args (2.7.3)
45
actioncable (8.0.3)
56
actionpack (= 8.0.3)
67
activesupport (= 8.0.3)
@@ -349,6 +350,7 @@ PLATFORMS
349350
x86_64-linux-musl
350351

351352
DEPENDENCIES
353+
action_args
352354
active_decorator
353355
aws-sdk-s3 (~> 1)
354356
bootsnap

app/controllers/messages_controller.rb

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
class MessagesController < ApplicationController
22
PER_PAGE = 50
33

4-
# GET /messages
5-
def index
6-
if (list_name = params[:list_name])
4+
# GET /ruby-dev or /q=searchterm
5+
def index(list_name: nil, q: nil, page: nil)
6+
if list_name
77
@list = List.find_by_name list_name
88

99
messages = Message.with_recursive(parent_and_children: [Message.where(list_id: @list, parent_id: nil).order(:id).limit(100), Message.joins('inner join parent_and_children on messages.parent_id = parent_and_children.id')])
1010
.joins('inner join parent_and_children on parent_and_children.id = messages.id')
1111
@messages = compose_tree(messages)
12-
elsif (query = params[:q])
13-
search query
12+
elsif q
13+
search q, page
1414

1515
render :search
1616
else
@@ -20,10 +20,10 @@ def index
2020
end
2121
end
2222

23-
# GET /messages/ruby-dev/1
24-
def show
25-
@list = List.find_by_name(params[:list_name])
26-
@message = Message.find_by(list_id: @list, list_seq: params[:list_seq])
23+
# GET /ruby-dev/1
24+
def show(list_name:, list_seq:)
25+
@list = List.find_by_name(list_name)
26+
@message = Message.find_by!(list_id: @list, list_seq: list_seq)
2727
end
2828

2929
private
@@ -38,8 +38,7 @@ def get_list_ids(params)
3838
list_ids
3939
end
4040

41-
def search(query)
42-
page = params[:page].to_i
41+
def search(query, page)
4342
list_ids = get_list_ids(params)
4443
if list_ids.empty?
4544
raise "Need to select at least one list"
@@ -48,7 +47,7 @@ def search(query)
4847
# %> and <-> are defined by pg_trgm.
4948
# https://www.postgresql.org/docs/17/pgtrgm.html
5049
message_where = Message.where('body %> ? AND list_id IN (?)', query, list_ids).order(Arel.sql('body <-> ?', query))
51-
@messages = message_where.offset(page * PER_PAGE).limit(PER_PAGE)
50+
@messages = message_where.offset(page.to_i * PER_PAGE).limit(PER_PAGE)
5251
end
5352

5453
def compose_tree(messages)

0 commit comments

Comments
 (0)