やりたいこと
- newアクションの時に確認画面へ(url: confirm_blogs_path)
- updateアクションの時は一覧画面へ(blogs_path)
- 引数がレコードに存在しない場合、createアクションへ送信します。
- 引数がレコードに存在している場合、updateアクションへ送信します。
確認画面(cofirmアクション)へ送信するためには、オプションを与えて、送り先を変える必要があります。
ですので、単純にform_forを編集し、url: confirm_blogs_pathurl
オプションを与え下のような形にしても良いが
1
|
<%= form_for(@blog, url: confirm_blogs_path) do |f| %>
|
これでは、editアクションを実行した時にエラーになります。このエラーを避けるためにHelperメソッドを作成し、newアクションの時は、url: confirm_blogs_path
オプションに、updateアクションのときはblogs_path
オプションが生成されるようにする。
app/helpers/blogs_helper.rbにhelperメソッドを作成する
1
2
3
4
5
6
7
8
9
|
module BlogsHelper
def choose_new_or_edit
if action_name == 'new' || action_name == 'confirm'
confirm_blogs_path
elsif action_name == 'edit'
blog_path
end
end
end
|
定義したヘルパーメソッドを使用する
app/views/blogs/_form.html.erb
1
|
<%= form_for(@blog, url: choose_new_or_edit) do |f| %>
|
以上。
See Also