2 flat logo on transparent 256
2018-03-10

Ruby On Rails4で簡易ブログを作成する3 | editページからデータをupdateさせる

267569

前回はblogのはCreateとEdtiのアクションとページを作成します。

記事一覧

Ruby On Rails4で簡易ブログを作成する1 | VIew Controller ルートを作成する

Ruby On Rails4で簡易ブログを作成する2 | editとcreateのアクションとページを作成する

今回対応すること

indexのページから各ページの値を変更できるようにします。

1:Indexとupdateアクションを編集する

BlogsControllerのindexアクションを変更しupdateアクションを追加します。

class BlogsController < ApplicationController

  #変更する内容
  def index
    @blogs = Blog.all
  end

  def new

  end

  def create
    @blog= Blog.new(blog_params)
    @blog.save
    redirect_to blogs_path
  end

  def edit
  
    @blog = Blog.find(params[:id])
  
end

 #追加する内容
  def update
    @blog = Blog.find(params[:id])

    if @blog.update(blog_params)
      redirect_to blogs_path
    else
     render 'edit'
    end
  end

  private
  def blog_params
    params.require(:blog).permit(:title, :text)
  end

end

2:Indexページを編集する

編集ファイルpath: app/views/blog/index.html.erb

<h1>全ての投稿一覧</h1>

<table>
  <tr>
    <th>タイトル</th>
    <th>内容</th>
  </tr>

  <% @blogs.each do |post| %>
    <tr>
      <td><%= post.title %></td>
      <td><%= post.text %></td>
    </tr>
  <% end %>
</table>

indexページの@blogsはindexのアクションで設定したインスタンス変数になります。

@blogsはBlogのデーブルに登録された全情報が取得されるので、indexページで繰り返し処理で表示します。

localhost:3000へアクセスすると登録データの一覧が表示されます。

blog_index.png

表示されない場合はデータが登録できていないので localhost:3000/blogs/newへアクセスし、データを何件か登録してください

3:Indexページへeditページへのリンクを設定する

編集ファイルpath: app/views/blog/index.html.erb

<h1>全ての投稿一覧</h1>

<table>
  <tr>
    <th>タイトル</th>
    <th>内容</th>
  </tr>

  <% @blogs.each do |blog| %>
      <tr>
        <td><%= blog.title %></td>
        <td><%= blog.text %></td>
        #追加する内容
        <td><%=link_to "編集する",edit_blog_path(blog.id) %></td>

      </tr>
  <% end %>
</table>

editアクションは個別の値を編集します。

その為indexページでユニークの値(blog.id)をURLで引き渡します。

再度localhost:3000へアクセスすると編集ページへのリンクが選択されています。

editpage

編集するボタンを選択すると登録したデータが表示されます。 UpdateBlogを選択するとデータがアップデートされます。

editpage2.png

前の記事
次の記事