【问题标题】:map.connect in routes.rb not executingroute.rb 中的 map.connect 未执行
【发布时间】:2011-08-25 02:23:44
【问题描述】:

我没有一个一个地添加团队,而是尝试创建一个表单来一次输入一堆以逗号分隔的团队名称。在我的 routes.rb 中,我有

map.connect '/teams/massentry', :controller => 'teams', :action => 'massentry'
map.resources :teams

在 teams_controller.rb 中,我有

def massentry
  @team = Team.new
end

这不是我完成后的样子。我只是把它卡在那里,所以会有一些东西。最后,我有 /views/teams/massentry.html.erb

<% form_tag({:controller => "teams", :action => "massentry"}, :method => 'get') do %>
  <p>
    <%= label_tag(:t, "CSV List of Teams" %>
    <%= text_area_tag(:t, "", :size => "24x6") %>
  </p>
  <p><%= submit_tag("Submit") %></p>
<% end %>

我不知道这种形式是否正确,显然没有任何逻辑,但我只是想看看它是什么样子。如果我去

http://localhost:3000/teams/massentry

它返回找不到 id=massentry 的团队。它正在执行 show 方法,但我想如果我将 map.connect 放在 routes.rb 中的资源行之前,它会重定向。使用 Rails 2.3.8

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    Rails 路线评估in the order they appear。因此,您可以按照您刚刚描述的方式保留它(首先是您的自定义路线),也可以像@numbers1311407 所说的那样在RESTful way 中进行。此外,使用:post instead of :get 更有意义。

    【讨论】:

      【解决方案2】:

      试试这样:

      map.resources :teams, :collection => { :massentry => :get }
      

      【讨论】:

      • 我得到了相同的结果,将 routes.rb 中的两行替换为上面的行。我也尝试过:post 而不是:get。显示服务器正在做什么的东西以“Processing TeamsController#show”开头,所以它似乎没有得到地图线。
      猜你喜欢
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 2014-03-29
      • 2021-02-14
      • 1970-01-01
      • 2013-01-30
      相关资源
      最近更新 更多