BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

メモ(Rails IV)

上書き

post=Post.find_by(id:1)
post.content="hoge"
post.save

削除

post=Post.find_by(id:1)
post.destroy

上書き(実際にビューとコントローラにて)

<div class="main posts-new">
  <div class="container">
    <h1 class="form-heading">編集する</h1>
    <%= form_tag("/posts/#{@post.id}/update") do %>
      <div class="form">
        <div class="form-body">
          <textarea name="content"><%= @post.content %></textarea>
          <input type="submit" value="保存">
        </div>
      </div>
    <% end %>
  </div>
</div>
def update
    @post = Post.find_by(id: params[:id])
    @post.content = params[:content]
    @post.save
    redirect_to("/posts/index")
  end

削除(実際にビューとコントローラにて)

  • link_to("削除", "/posts/#{@post.id}/destroy")のように書くと「get "posts/:id/destroy"」のように書かれたルーティングを探してしまう
  • link_toの第三引数に「{method: "post"}」を追加することで、「post」として定義されているルーティングにマッチするようになる
<%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %>
def destroy
    @post = Post.find_by(id: params[:id])
    @post.destroy
    redirect_to("/posts/index")
  end