1

サンプルをデータベースに挿入するために、理想的にはルートのない単純な送信を行いたいのですが、問題があります。

これは財務の指標です。

index.html.erb(ファイナンスパス)

<%= form_for(@place,:url => new_place_finance_path,:method => :put) do |f| %>

  <%= f.text_field :place %>
  <%= f.submit %>
<% end %>

可能であれば、メンバーを作成したくないのですが、ルートを作成するにはどうすればよいですか。

resources :finances do
  member do
    put :new_place
  end
end

と私の財政のコントローラー:

def index
  @finances = Finance.all
  respond_with @finances
  @place = Place.new
end

およびアクションnew_place:

def new_place
  @place = Place.create(params[:place])
  @place.save
  if @place.save
    redirect_to finances_path,:notice => 'Lugar criado com sucesso.'
  else
    redirect_to finances_path,:notice => 'Falha ao criar lugar.'
  end 
end

このエラーが発生します:

No route matches {:action=>"new_place", :controller=>"finances", :id=>nil}

レーキルートを実行すると:

new_place_finance PUT    /finances/:id/new_place(.:format) finances#new_place
4

2 に答える 2

1

ここには珍しいことがいくつかあります。新しい場所を作成したい場合は、通常、ルートでこれを行います。金融が多くの場所を持つことができるなら、それはそうなるでしょう...

resources :finances do
  resources :places
end

これにより、new_finance_place(@finance)というメソッドが作成され、新しいフォームに移動します。そして、POSTを期待する/ Finances /:finance_id/postsへの別のURLを作成します-PostsControllerのcreateメソッドを呼び出します。

新しいフォームから、次のように書くことができます。

<%= form_for [@finance, @place] do |f| %>
于 2013-01-31T00:50:18.920 に答える
0

new_place_finance_path正しく評価するには、財務オブジェクトが必要です。上に貼り付けたルート

 new_place_finance PUT    /finances/:id/new_place(.:format) finances#new_place

したがって、@ Finance.idnew_place_finance_path(@finance)に置き換えられます(または、モデルでそのメソッドを作成した場合):idto_param

于 2013-01-31T00:50:47.133 に答える