質問編集履歴

1

修正

2020/11/04 02:17

投稿

MH00214
MH00214

スコア53

test CHANGED
File without changes
test CHANGED
@@ -1,185 +1 @@
1
- ## 問題
2
-
3
- 現在、ニュースを表示する一覧ページと詳細ページを作成しています。
4
-
5
- 一覧ページの方は
6
-
7
- * Railsのインスタンス変数から受け取ったデータをHTMLで表示している
8
-
9
- * ページ上部にセレクトボックスがあり、それの選択内容によってカテゴリごとの表示切り替えを行っている(プレスリリース、を選択したらプレスリリース関連のものだけ表示される)
10
-
11
- * 表示の切り替えはCSS+jQueryで実装。基本的にはactiveクラスの付け外しで対応。
12
-
13
-
14
-
15
- 詳細ページの方は
16
-
17
- * 普通に記事の内容が表示される
18
-
19
- * 一番上にカテゴリを表すボタンがあり、**そこをクリックすると「そのカテゴリを選択した状態」の一覧ページに遷移する**
20
-
21
-
22
-
23
- という仕様です。ここを実現したいのですが、方法が見つかりません。
24
-
25
-
26
-
27
- 試しに詳細ページの方に
28
-
29
-
30
-
31
- ```HTML
32
-
33
- <p class="back">サンプル</p>
34
-
35
- ```
36
-
37
- として
38
-
39
-
40
-
41
- ```javascript
42
-
43
- $(function() {
44
-
45
- $(".back").on("click", function() {
46
-
47
- window.history.back();
48
-
49
- })
50
-
51
- });
52
-
53
- ```
54
-
55
-
56
-
57
- としたのですが、optionタグの選択肢だけ切り替わったまま、できる必要のない要素まで出てしまっています。
58
-
59
- セレクトボックスは下記のようにしており
60
-
61
-
62
-
63
- ```HTML
64
-
65
- <select name="news-category-select-box" class="news-category-select-box">
66
-
67
- <option value="all">すべて</option>
68
-
69
- <option value="media">メディア</option>
70
-
71
- <option value="press_release">プレスリリース</option>
72
-
73
- </select>
74
-
75
- ```
76
-
77
-
78
-
79
- ニュースの覧デタは下のようにRailsを使てデータ表示してます。
1
+ 部不具合を含んだコドや誤った述があたため、質問削除ました。再度調べ直し投稿します。
80
-
81
-
82
-
83
- ```HTML
84
-
85
- <div class="news-content-cards">
86
-
87
- <% news.each do |article| %>
88
-
89
- <%= link_to article.url(relative: true), class: "news-content-card news-content-#{cms_fragment_content(:category_en, article)} active" do %>
90
-
91
- <% if cms_fragment_content(:hero_image, article).present? %>
92
-
93
- <%= image_tag cms_fragment_content(:hero_image, article).first.variant(resize: '480x287').processed, class: "news-content-card-image", alt: "#{cms_fragment_content(:title, article)}>" %>
94
-
95
- <% else %>
96
-
97
- <%= image_tag "pages/cms/news/image.png", class: "news-content-card-image" %>
98
-
99
- <% end %>
100
-
101
- <div class="news-content-card-info">
102
-
103
- <p class="news-date"><%= cms_fragment_content(:publish_date, article) %></p>
104
-
105
- <h3 class="news-title"><%= cms_fragment_content(:title, article) %></h3>
106
-
107
- <p class="news-category"><%= cms_fragment_content(:category_jp, article) %></p>
108
-
109
- </div>
110
-
111
- <% end %>
112
-
113
- <% end %>
114
-
115
- </div>
116
-
117
- ```
118
-
119
-
120
-
121
- `news-content-#{cms_fragment_content(:category_en, article)} のクラス名の時にactiveをつける形で、表示、非表示を切り替えています。
122
-
123
-
124
-
125
- ```jQuery
126
-
127
- $(function () {
128
-
129
- const eliminateRightMargin = function () {
130
-
131
- const rowCount = 3;
132
-
133
- const activeClassCount = $(".active").length
134
-
135
- const lineCount = Math.floor(activeClassCount / rowCount);
136
-
137
- for (let i = 1; i <= lineCount; i++) {
138
-
139
- $(".active").eq(rowCount * i - 1).addClass("eliminate-right-margin")
140
-
141
- }
142
-
143
- }
144
-
145
-
146
-
147
- $(".news-category-select-box").change(function () {
148
-
149
- const $newsContentCard = $(".news-content-card");
150
-
151
- const $selectBoxValue = $(this).val();
152
-
153
- $newsContentCard.removeClass("active");
154
-
155
- $newsContentCard.removeClass("eliminate-right-margin");
156
-
157
- if ($selectBoxValue === "all") {
158
-
159
- $newsContentCard.addClass("active");
160
-
161
- eliminateRightMargin();
162
-
163
- }
164
-
165
- $(".news-content-" + $selectBoxValue).addClass("active");
166
-
167
- eliminateRightMargin();
168
-
169
- });
170
-
171
-
172
-
173
- $(window).on("load", function () {
174
-
175
- eliminateRightMargin();
176
-
177
- });
178
-
179
- });
180
-
181
- ```
182
-
183
-
184
-
185
- 知見のある方おりましたら教えていただけますと助かります。