0

「Notes」というコントローラーがあり、それに関連するモデルは「Note」というテキストフィールドを持つNoteです(私は知っています)。

new.html.erbビューに非常に単純なフォームがあります。

<% form_for(@note) do |f| %>
    <p><%= f.error_messages %>&nbsp;</p>
    <h2 class="productList"><label for="">Note: </label>
    <%= f.text_area :note, :cols => "50", :rows => "10" %></h2>
    <br />
    <p><%= f.submit "Create" %></p>
<% end %>

ただし、[送信]ボタンをクリックすると、呼び出されるアクションは完全に異なるコントローラーからのものになります。

Processing OtherController#add_note (for 127.0.0.1 at 2012-07-30 09:04:42) [POST]

コントローラはリソースとして設定されていますが、このアクションはroutes.rbでも定義されていないことに注意してください。

ルート.rbの「notes」行は次のようになります。

map.resources :notes, :collection => { :note_list => :get, :get_json_list => :get }, :member => { :applications => :get, :replace => :get }

そして、「レーキルート」はコントローラー用に次のラインを生成します。

get_json_list_notes GET    /notes/get_json_list(.:format) {:controller=>"notes", :action=>"get_json_list"}
note_list_notes     GET    /notes/note_list(.:format) {:controller=>"notes", :action=>"note_list"}
notes               GET    /notes(.:format)  {:controller=>"notes", :action=>"index"}
                    POST   /notes(.:format)  {:controller=>"notes", :action=>"create"}
new_note            GET    /notes/new(.:format)  {:controller=>"notes", :action=>"new"}
edit_note           GET    /notes/:id/edit(.:format) {:controller=>"notes", :action=>"edit"}
replace_note        GET    /notes/:id/replace(.:format) {:controller=>"notes", :action=>"replace"}
applications_note   GET    /notes/:id/applications(.:format) {:controller=>"notes", :action=>"applications"}
note                GET    /notes/:id(.:format) {:controller=>"notes", :action=>"show"}
                    PUT    /notes/:id(.:format) {:controller=>"notes", :action=>"update"}
                    DELETE /notes/:id(.:format) {:controller=>"notes", :action=>"destroy"}

Javascriptのフォームやコントロールにも何もバインドされていません。何が間違ったコントローラーとアクションを呼び出すのでしょうか?

UPDATE-form_forタグの出力は次のとおりです。

<form id="new_note" class="new_note" method="post" action="/notes">
  <p>&nbsp;</p>
  <h2 class="productList">
    <label for="">Note: </label>
    <textarea id="note_text" rows="10" name="note_text" cols="50"></textarea>
  </h2>
  <br>
  <p>
    <input id="note_submit" type="submit" value="Create" name="commit">
  </p>
</form>

UPDATE2-フォームは「Note.new」に渡されています

4

1 に答える 1

0

私はおかしな馬鹿です。別のページの「note_submit」にバインドされたJavascriptリスナーがあります。

于 2012-08-01T14:41:32.653 に答える