1

同じページの異なるアクションにリンクされた 2 つのフォームを取得しました。1 つのフォームが失敗した場合でも、アドレス フィールドに同じ URL が必要であり、それは両方のフォームに当てはまります。私のルートはこのように見えますが、最初のルートは 2 番目のルートなどをオーバーライドしています。

match "send-clientletter" => "mail_lists#compose_clientletter", :as => "compose_clientletter", via: :get
match "send-clientletter" => "mail_lists#send_clientletter", :as => "send_clientletter", via: :post
match "send-clientletter" => "mail_lists#client_create", :as => "client_create", via: :post

ご覧のとおり、2 つ取得via: :postしましたが、これが私の問題です。両方のフォームに同じ URL が必要なため、render "compose_clientletter"いずれかのフォームにエラーがあれば実行できます。

これを行う方法はありますか?または、フォームが失敗した場合、2 つの異なる URL を使用する必要がありますか?

4

1 に答える 1

1

技術的には RESTful ではありませんが、1 つを PUT を使用するように切り替え、もう 1 つを POST を使用するように切り替えることができます。とにかく、これが厳密にRESTfulであるようには聞こえないので、おそらく問題ではありません...

同じことを達成するための代替の、おそらくよりクリーンな方法は、次のように、同じアクションに移動させることです。

def my_action
  if params[:object_1]
    method_to_handle_object_1_creation
  elsif params[:object_2]
    method_to_handle_object_2_creation
  end
end
于 2013-05-31T07:04:31.663 に答える