応用的な画面やフォームを作成できるようになる~2~
ルーティングにアクションを追加 - Ruby on Rails入門
使用するアクションへのルーティングだけを設定 - Ruby on Rails入門
Comment
viewのなかで2つもrenderしたり、
<%= render 'comments/index', { blog: @blog, entry: @entry } %>
<%= render 'comments/new', { blog: @blog, entry: @entry } %>
この後@comments,@commentを使うからこのviewを呼び出したところで変数定義しておいたり、
def show
@comments = @entry.comments
@comment = Comment.new
end
**_controllerごとにparamsのidが変更して行ったり
def set_blog
@blog = Blog.find(params[:blog_id])
end
def set_entry
@entry = Entry.find(params[:entry_id])
end
def set_comment
@comment = Comment.find(params[:id])
end
Approveアクションを自分で追加したり
resources :comments, only: [:create, :show, :edit, :update, :destroy] do
get 'approve'
end
<td>(承認待ち)</td>
<td><%= link_to 'Approve', blog_entry_comment_approve_path(@blog, @entry, comment) %></td>
def approve
@comment = Comment.find(params[:comment_id])
@comment.status = "approve"
@comment.save
redirect_to blog_entry_path(@blog, @entry)
end
結構イメージ通り作ってみて動作することがわかった、
binding.pry使ってデバックして解決していけば結構進む!
見た目についてはそんなに触れていないけど
コネクトの仕方が身についたのは大きいかな
最後引っかかり続けたところ
redirect_to blog_entry_path(@blog, @entry)
@blog,@entryは勝手に識別してくれるわけじゃなくて何番目の引数であるかってことでURL作られるらしい(よく考えれば当たり前)
/blog/@blog/entry/@entryって感じ!
最後まで気づかないで逆にしてたからそれはまあできないわな・・・って感じだった