我是一個Rails3的新手,我有一個奇怪的問題。在Google和StackOverflow中搜索了一段時間後,我決定寫下我的問題。未定義的方法unexisting_url
我有一個Competencia
和Partida
模型。 Competencia has_many :partidas
和Partidas belongs_to :competencia
。
I'm嵌套資源的工作和我的代碼如下所示:
的routes.rb
resources :competencias do
resources :partidas
end
partidas_controller.rb
class PartidasController < ApplicationController
def new
@competencia = Competencia.find(params[:competencia_id])
@partida = @competencia.partidas.build
end
def create
@competencia = Competencia.find(params[:competencia_id])
@partida = @competencia.partidas.build(params[:partida])
if @partida.save then #blabla end
end
end
的意見/編法/new.html.erb
<%= form_for [@competencia, @partida], :url => competencia_partidas_path(@competencia) do |f| %>
<!--blabla-->
<% end %>
我知道這isn't指定在form_for
助手的URL正確的方式(特別是如果我可不是使用自定義操作),但它只是我可以工作的出路。當我寫了這樣的事情:<%= form_for [@competencia, @partida] do |f| %>
從來就得到這個錯誤:
Showing /Users/ks/rails/projects/chronos/app/views/partidas/new.html.erb where line #4 raised:
undefined method `competencium_partidas_path' for #<#<Class:0x00000101718548>:0x00000101713728>
當我檢查了線路(耙路線)似乎一切都很好。
competencia_partidas GET /competencias/:competencia_id/partidas(.:format) {:action=>"index", :controller=>"partidas"}
POST /competencias/:competencia_id/partidas(.:format) {:action=>"create", :controller=>"partidas"}
new_competencia_partida GET /competencias/:competencia_id/partidas/new(.:format) {:action=>"new", :controller=>"partidas"}
有人能解釋我在competencium名字來源於?解決這個問題的正確方法是什麼?
太棒了!我會閱讀更多關於inflectors,並會考慮將我的名字換成英文。非常感謝您的快速回答。這非常有用,我可以研究更多信息。 – Kerlos