人生100年!生涯エンジニア人生!

楽しいエンジニア人生!

#GWアドベントカレンダー 「1つサービスを作る」の5日目記事 情報の追加2

以下の GWアドベントカレンダー 「1つサービスを作る」の5日目記事です。

gw-advent.9wick.com

情報の追加をしていきます。
具体的にはプロフィール画面に、ウェブサイト情報などを追加したのは読めたのですが、更新ができないので更新します。

更新

app/controllers/users_controller.rb を編集しupdateを追加します。

  def update
    @user = User.find(params[:id])
    if @user.update(websites_params)
      flash[:success] = "Websites updated"
      redirect_to @user
    else
      render 'edit'
    end
  end

  private

  def websites_params
    params.require(:user).permit(websites_attributes:[:title, :url, :id])
  end

ここでは permitで更新したい関連テーブルをwebsites_attributes:シンボルで指定します。
これでwebsitesテーブルだけを更新します。

app/views/users/show.html.erb も更新し<p><%= @user.twitter %></p>の下に以下の変更点を追記します。

    <table class="table table-responsive">
      <% @user.websites.each do |w| %>
        <tr>
          <td>
            <%= w.title %>
          </td>
          <td>
            <%= w.url %>
          </td>
        </tr>
      <% end %>
    </table>