2013-05-30 47 views
1

我有两种形式链接到同一页上的不同动作。当一个表单失败时,我仍然希望在地址字段中使用相同的url,这适用于这两种表单。我的路线看起来像这样,但第一个覆盖第二个或类似的东西。将相同的匹配路由到多个控制器?

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 

正如你可以看到我有两个via: :post和这里是我的问题。既然我仍然想为这两个形式相同的URL,所以我可以做render "compose_clientletter"如果theres在任何形式的任何错误。

有没有办法做到这一点?或者如果表格失败,我还得和两个不同的网站住在一起吗?

+4

我不完全确定你在这里试图达到什么样的目标......你可以尝试更好地解释你的问题和你想达到的目标吗? –

回答

1

从技术上来说,RESTful并不是很好,你可以切换一个使用PUT,一个使用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 
+0

这是两个可行的解决方案。第二秒我有一些问题,所以我跟第一个一起去了,即使是那个看起来不太干净的人!感谢寿! –