Rails形成触发错误的动作

时间:2013-01-19 03:10:50

标签: ruby-on-rails forms routes

我在同一视图中有多个表单,似乎它们彼此冲突。我有一个表单应该在用户控制器中调用揭示操作,而是在用户控制器中调用登录操作。

这是我的config / routes.rb:

get "logins" => 'users#logins', :as => 'logins'
delete "logins" => 'users#deletelogin', :as => 'logins'
post 'logins' => 'users#addlogin', :as => 'add_login'
get "logins" => 'users#search', :as => 'search'
get "logins" => 'users#reveal', :as => 'reveal'

以下是链接到错误操作的按钮:

<td><%= button_to "Reveal", { :controller => :users, :action => 'reveal', :id => login.id }, method: :get, :class => 'btn' %></td>

这是呈现的html:

<td><form action="/logins?id=24" class="button_to" method="post"><div><input class="btn" type="submit" value="Reveal" /><input name="authenticity_token" type="hidden" value="POKdWunwvaKQHb+Mzj/3UrG0xIbKPqELy4n3VGqGrxU=" /></div></form></td>

1 个答案:

答案 0 :(得分:2)

所有三个get方法都映射到/logins url,因此行为是预期的。

get方法中使用的哈希的第一部分定义了将在url中使用的实际路径。你必须做类似的事情:

get "logins" => 'users#logins', :as => 'logins'
get "search" => 'users#search', :as => 'search'
get "reveal" => 'users#reveal', :as => 'reveal'

以获得理想的效果。