2

このフォームはapplication.html.erbにあります。

<%= form_tag(:action=>"index", :controller=>"posts") %>
  <p>
  // code here
  </p>

なぜこれがposts->create代わりに向けられるのか理解できposts->indexませんか?

ありがとう。

4

2 に答える 2

1

各アクションの用途に関して、少し混乱しているようです。以下は、典型的な 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アクセスできます。newedit

于 2011-09-30T01:56:12.227 に答える
1

基本的に、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 %> 
于 2011-09-30T02:25:45.797 に答える