回答編集履歴

1

要望のあった、ソースコードサンプルを追記

2019/05/06 02:22

投稿

siruku6
siruku6

スコア1382

test CHANGED
@@ -51,3 +51,95 @@
51
51
  ruby から javascript にわたるときだったか、逆のときだったか忘れてしまったのですが、もしかしたら true や false が文字列として javascript にわたってしまうかもしれません。
52
52
 
53
53
  そのときは適切に変換してあげて下さい。
54
+
55
+
56
+
57
+ ## 追記
58
+
59
+
60
+
61
+ 動いているのであればそれでよいと思います。
62
+
63
+ どうしてもきれいなコード書きたい、という場合はいろんな人のコードを見るのが参考になるので、あくまで参考までに私だったらどう修正するかを載せてみます。
64
+
65
+
66
+
67
+ ```ruby
68
+
69
+ 【user_controller】
70
+
71
+ # Ver.1 (DRYにしてみた)
72
+
73
+ def check
74
+
75
+ unless params[:url] == current_user.friendly_url
76
+
77
+ # INFO: is_duplicated <= true or false が代入される
78
+
79
+ # paramsとして送られてきたurlで、Userモデルのfriendly_urlカラムを検索
80
+
81
+ is_duplicated = User.where('friendly_url LIKE(?)', "#{params[:url]}").exists?
82
+
83
+ respond_to do |format|
84
+
85
+ format.json { render json: { isduplicated: is_duplicated }}
86
+
87
+ end
88
+
89
+ else
90
+
91
+ render nothing: true #何もしない動作
92
+
93
+ end
94
+
95
+ end
96
+
97
+
98
+
99
+ # Ver.2 (好みの問題)
100
+
101
+ def check
102
+
103
+ if params[:url] == current_user.friendly_url
104
+
105
+ render nothing: true #何もしない動作
106
+
107
+ return
108
+
109
+ end
110
+
111
+
112
+
113
+ # INFO: is_duplicated <= true or false が代入される
114
+
115
+ # paramsとして送られてきたurlで、Userモデルのfriendly_urlカラムを検索
116
+
117
+ is_duplicated = User.where('friendly_url LIKE(?)', "#{params[:url]}").exists?
118
+
119
+ respond_to do |format|
120
+
121
+ format.json { render json: { isduplicated: is_duplicated }}
122
+
123
+ end
124
+
125
+ end
126
+
127
+ ```
128
+
129
+
130
+
131
+ これが正しいのかどうかはわかりません。
132
+
133
+ きれいなコードを書くためには、rubocopというgemがかなりおすすめですので、少しずつこのgemの言うとおりに修正していくとよいと思います。
134
+
135
+
136
+
137
+ ## 補足
138
+
139
+
140
+
141
+ `render nothing: true #何もしない動作`
142
+
143
+ の部分は、何か必要に応じてパラメータを渡してあげてもいいかもしれませんね。
144
+
145
+ 今のところはjavascript側で受け取る処理がないので、このままでもよいと思いました。