リースを作りました。
resources :dashboards
フォームを含む部分ファイルがあり、この部分ファイルを使用して (フォーム要素が変更されないため) 更新および作成したいと考えています。だからここに私が持っているものがあります:
コントローラ
class DashboardsController < ApplicationController
def new
@dashboard = Dashboard.new
end
end
意見
/dashboards/new.html.erb
<%= render :partial => "form", :locals => { :dashboard => @dashboard } %>
部分形式
/dashboards/_form.html.erb
<%= form_for(@dashboard) do |form| %>
.....
<% end %>
ルビーガイド
Ruby ガイドには次のように記載されています。
Article モデルはアプリケーションのユーザーが直接利用できるため、Rails で開発するためのベスト プラクティスに従って、リソースとして宣言する必要があります。RESTful リソースを扱う場合、レコードの識別に頼ると、form_for の呼び出しが大幅に簡単になります。要するに、モデル インスタンスを渡すだけで、Rails にモデル名と残りを理解させることができます。例えば:
## Creating a new article
# long-style:
form_for(@article, :url => articles_path)
# same thing, short-style (record identification gets used):
form_for(@article)
## Editing an existing article
# long-style:
form_for(@article, :url => article_path(@article), :html => { :method => "put" })
# short-style:
form_for(@article)
結果
Railsガイドに正しく従ったと思いました。@dashboard をリソースにしたからです。それをフォームに渡すだけで、アクション、メソッド、その他を処理できます。代わりに私はこれを得ています:
<form accept-charset="UTF-8" action="/dashboards" class="new_dashboard" id="new_dashboard_" method="post">
ドキュメントによると。新しいアクションを使用しているため、フォームのアクションは「/dashboards/new」にすべきではありませんか? また、/edit アクションで同じコードを使用するときに、配置するメソッドを宣言する追加のフィールドを渡す必要がありますか??
私の結果は、何があっても常に同じです。フォームは決して変わりません。
私は何を間違っていますか?
編集
これが私のルーター情報ですrake routes
GET /dashboards(.:format) dashboards#index
POST /dashboards(.:format) dashboards#create
GET /dashboards/new(.:format) dashboards#new
GET /dashboards/:id/edit(.:format) dashboards#edit
GET /dashboards/:id(.:format) dashboards#show
PUT /dashboards/:id(.:format) dashboards#update
DELETE /dashboards/:id(.:format) dashboards#destroy