【问题标题】:Rails form triggering wrong actionRails 表单触发错误操作
【发布时间】:2013-01-19 03:10:50
【问题描述】:

我在同一个视图中有几个表单,而且它们似乎相互冲突。我有一个表单应该调用用户控制器中的显示操作,但它调用的是用户控制器中的登录操作。

这是我的配置/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>

【问题讨论】:

    标签: ruby-on-rails forms routes


    【解决方案1】:

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

    get 方法中使用的散列的第一部分定义了将在 url 中使用的实际路径。您必须执行以下操作:

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

    获得想要的效果。

    【讨论】:

    • 谢谢!我误解了该路由是如何工作的。它完全知道。
    猜你喜欢
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多