このフォームはapplication.html.erbにあります。
<%= form_tag(:action=>"index", :controller=>"posts") %>
<p>
// code here
</p>
なぜこれがposts->create
代わりに向けられるのか理解できposts->index
ませんか?
ありがとう。
このフォームはapplication.html.erbにあります。
<%= form_tag(:action=>"index", :controller=>"posts") %>
<p>
// code here
</p>
なぜこれがposts->create
代わりに向けられるのか理解できposts->index
ませんか?
ありがとう。
各アクションの用途に関して、少し混乱しているようです。以下は、典型的な RESTful の使用法を簡単にまとめたものです。
インデックス -> 項目のリストを表示
新規/編集 -> 項目を追加または編集するフォーム
作成/更新-> 項目を作成/更新するコントローラー アクション
ルート ファイルがインデックスに移動しない理由は、インデックスが投稿が通常作成または更新されるアクションではないためです。最善の方法は、RESTful にすることです。非常に特殊な状況でない限り、システムをセットアップする最良の方法は、おそらく次のようなものです。
# routes.rb
resources :posts
# application.html.erb (or better: posts/_form.html.erb).
<% form_for @post do |f| %>
<% end %>
# posts controller, whichever action you want to use
def new
@post = Post.new
end
フォームを部分的に呼び出すことで、 、、またはシステム内の投稿を操作する必要があるその他の場所でフォームにform
アクセスできます。new
edit
基本的に、Rails は " RESTful " な Web サービス アーキテクチャを遵守します。REST と Rails では、リソースに関してサーバーと対話する 7 つの異なる方法があります。現在のコードでは、フォームのアクションを index として指定しても意味がありません。Rails のフォーム ヘルパーは、POST、PUT、または DELETE のいずれかを実行できます。
投稿を作成してからインデックスにリダイレクトする場合は、該当するコントローラー アクションで行うことができます。
class PostsController < ApplicationController
...
def create
@post = Post.new
respond_to do |format|
if @post.save
format.html { redirect_to(:action => 'index') }
end
end
フォームは次のようになりますが、
<% form_for @post do |f| %>
# put whatever fields necessary to create the post here
<% end %>