こちらの質問をみた際にはQiitaのリンクが切れていたので
以下の記事で動いたのでそれを元に説明させていただければと思います。
(また、だいぶ時間が経っているのでそもそもご自身で解決済みだったりしているかもしれませんが..)
https://qiita.com/chokosuki4400/items/647f33528fba1fe3f7ee
すこし記事だけでは詰まることもあると思うので実際に自分が動かして見た際のチェックポイントをまとめておきました.
まず記事ではUserモデルは最初からある想定みたいなので
rails g scaffold User name
のコマンドでとりあえず自分は一回作ってためしてみました。
また、記事で
permitにimageを追加
とありますがそこはscaffoldで生成した users_controller.rb
の71行目あたりの以下の部分を
def user_params
params.require(:user).permit(:name)
end
このようにしました
params.require(:user).permit(:name, :image)
最後に表示させるところですがとりあえずindex.html.erbで表示できればshowでもいけるのは当然なのでindexだけコードを載せようと思います。
1 <p id="notice"><%= notice %></p>
2
3 <h1>Users</h1>
4
5 <table>
6 <thead>
7 <tr>
8 <th>Name</th>
9 <th colspan="3"></th>
10 </tr>
11 </thead>
12
13 <tbody>
14 <% @users.each do |user| %>
15 <tr>
16 <img src="<%= user.image %>" width="100">
17 <td><%= user.name %></td>
18 <td><%= link_to 'Show', user %></td>
19 <td><%= link_to 'Edit', edit_user_path(user) %></td>
20 <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are y ou sure?' } %></td>
21 </tr>
22 <% end %>
23 </tbody>
24 </table>
25
26 <br>
27
28 <%= link_to 'New User', new_user_path %>
16行目のところが追記した部分です。
次に入力側と書いてある部分ですが
_form.html.erbの編集を以下のようにしました
1 <%= form_with(model: user, local: true) do |form| %>
2 <% if user.errors.any? %>
3 <div id="error_explanation">
4 <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
5
6 <ul>
7 <% user.errors.full_messages.each do |message| %>
8 <li><%= message %></li>
9 <% end %>
10 </ul>
11 </div>
12 <% end %>
13
14 <div class="field">
15 <%= form.label "顔写真" %>
16 <%= form.file_field :image %>
17 </div>
18
19 <div class="field">
20 <%= form.label :name %>
21 <%= form.text_field :name %>
22 </div>
23
24 <div class="actions">
25 <%= form.submit %>
26 </div>
27 <% end %>
14~17行までが追加した部分です。(divはいらないですがないのも不恰好なので)
また、記事では f.label :顔写真
などしていますがscaffoldで生成されたフォームはfでまとめていないでの上記のようによしなに変更しました。
これで思い通りの実装が行えるかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/23 06:38