我在同一视图中有多个表单,似乎它们彼此冲突。我有一个表单应该在用户控制器中调用揭示操作,而是在用户控制器中调用登录操作。
这是我的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>
答案 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'
以获得理想的效果。