Open2
Railsのルーティング

ルーティングごとのアクション
以下はresources :articles
を指定した場合と同じ
HTTP Verb | Path | Controller#Action | Named Routing Helper |
---|---|---|---|
GET | /admin/articles | admin/articles#index | admin_articles_path |
GET | /admin/articles/new | admin/articles#new | new_admin_article_path |
POST | /admin/articles | admin/articles#create | admin_articles_path |
GET | /admin/articles/:id | admin/articles#show | admin_article_path(:id) |
GET | /admin/articles/:id/edit | admin/articles#edit | edit_admin_article_path(:id) |
PATCH/PUT | /admin/articles/:id | admin/articles#update | admin_article_path(:id) |
DELETE | /admin/articles/:id | admin/articles#destroy | admin_article_path(:id) |
名前付きルーティング
as
オプションで任意のルーティングの_path
と_urlヘルパー
を使用できる
#sessionsコントローラーのdestroyアクションを呼び出す
# pathは/exit
get 'exit', to: 'sessions#destroy', as: :logout
<%= link_to 'Logout', logout_path %>
PATCH/PUT・DELETEの使い分け
PATCH/PUT
form_with
を付けると自動でpachメソッドを設定する
<h1>Edit Article</h1>
<%= form_with model: @article, local: true do |form| %>
<div>
<%= form.label :title %>
<%= form.text_field :title %>
</div>
<div>
<%= form.label :content %>
<%= form.text_area :content %>
</div>
<div>
<%= form.submit 'Update Article' %>
</div>
<% end %>
patchとputを手動で設定する場合、_methodでメソッドを送信する
PATCH
<form action="<%= admin_article_path(@article) %>" method="post">
<!-- CSRFトークン -->
<input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">
<!-- PATCHメソッドを指定 -->
<input type="hidden" name="_method" value="patch">
<label for="title">Title:</label>
<input type="text" name="article[title]" id="title" value="<%= @article.title %>">
<label for="content">Content:</label>
<textarea name="article[content]" id="content"><%= @article.content %></textarea>
<button type="submit">Update Article</button>
</form>
PUT
<form action="<%= admin_article_path(@article) %>" method="post">
<!-- CSRFトークン -->
<input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">
<!-- PUTメソッドを指定 -->
<input type="hidden" name="_method" value="put">
<label for="title">Title:</label>
<input type="text" name="article[title]" id="title" value="<%= @article.title %>">
<label for="content">Content:</label>
<textarea name="article[content]" id="content"><%= @article.content %></textarea>
<button type="submit">Update Article</button>
</form>
DELETE
method: :deleteオプションを付ける
<%= link_to 'Delete', admin_article_path(article), method: :delete, data: { confirm: 'Are you sure?' } %>
検証
参考

単数形のリソース
- 単数形(resource)の場合、idが不要になり一意になる