【问题标题】:Rails 4 - form with namespace model name spliting route nameRails 4 - 具有命名空间模型名称拆分路由名称的表单
【发布时间】:2013-09-04 09:50:28
【问题描述】:

我有一个带有管理命名空间和一个名为 Gametime 的模型的 rails 4 应用程序

namespace :admin do
  resources :gametimes
end

模型是game_time.rb

class GameTime < ActiveRecord::Base
end

索引和显示操作工作正常。我对新操作有疑问。

gametimes_controller.rb

def new
  @gametime = GameTime.new
end

new.html.erb

<% form_for [:admin, @gametime ] do |f| %>
<% end %>

我收到此错误

 NoMethodError at /admin/gametimes/new 
 undefined method `admin_game_times_path' for #<#<Class:0xae0d74c>:0xae0c2c0

 Request parameters 
 {"action"=>"new", "controller"=>"admin/gametimes"}

路线显示了这一点

  new_admin_gametime GET    /admin/gametimes/new(.:format)       admin/gametimes#new

我不明白为什么将路径设置为“game_time”而不是“gametime”?

【问题讨论】:

  • 因为您的模型是 GameTime 而不是 Gametime,所以这两个词之间有空格。

标签: ruby-on-rails


【解决方案1】:

您的模型名为GameTime,大写“G”和“T”。 form_for 将假定该路由为 game_time

如果您希望默认路由为gametime,则模型应命名为Gametime - 即只有“G”大写。

在内部,form_for 使用 ActiveModel::Name#param_key 来确定 URL 的那部分,这说明了您所看到的行为:

GameTime.model_name.param_key # => "game_time"
Gametime.model_name.param_key # => "gametime"

请注意,您的模型文件也被命名为game_time.rb,所以那里有一些一致性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 2013-02-12
    • 1970-01-01
    • 2017-11-09
    • 2017-12-27
    • 1970-01-01
    • 2014-03-31
    • 2023-03-11
    相关资源
    最近更新 更多