0
ここに新しい「開発者」があります。私は既存のアプリケーションのためのフォームを作成する方法を学ぼうとしており、私は髪を裂いています。
コントローラ:特定のコントローラのメソッドにフォームを送る方法は?
class DigitalRecipientsController < ApplicationController
def update
@line_item = line_item params[:id]
@recipients = @line_item.recipients
recipient = @recipients.create! :name => @new_name, :email => @new_email
end
end
routes.rbを:
resources :digital_recipients
テンプレートhtml.erb、(@のline_items.eachのループ内| LINE_ITEM |):
<%= form_for line_item, :url => {:controller => 'digital_recipients', :action => 'update'} do |f| %>
<%= f.label 'name: ' %><%= f.text_field(:name, value: @new_name) %>
<%= f.label ', email: ' %><%= f.text_field(:email, value: @new_email) %>
<%= f.submit %>
<% end %>
これはスロー例外:
No route matches {:action=>"update", :controller=>"digital_recipients"}
私は何を理解していないのですか?このフォームをそのコントローラのメソッド 'update'にどのように向けるのですか?
ご協力いただければ幸いです。どうもありがとうございます。
を試してみてください?問題はルートの定義方法にあります。 –
私はそうですが、それは空です。 –
ルートには注意してください。アンダースコアは単語区切りとして理解されています。下線付きのリソースを根絶する問題があります。あなたのリソースを 'digital_recipients'のままにしたい場合は、initializers/inflections.rbに追加しなければならないかもしれません(あなたのコントローラをform_forに書いても、HTMLビューのURLとして翻訳されますそれはルーティングの問題です) – Maxence