我有一個問題非常類似於這個問題在這裏問:NoMethodError/undefined method `foobar_path' when using form_for然而,答案在那裏混淆了我。
在開發我現在正在開發的應用程序之前,我經歷了Michael Hartel的Ruby on Rails教程,我嘗試複製他在創建用戶模型時創建我的模型時所完成的工作。我的應用程序被設計爲大學教授的數據庫,因此我使用的模型被稱爲「教授」,但它與「用戶」的概念相同。Rails的NoMethodError
這裏是我的New.html.erb代碼哪裏是哪裏的用戶去創建一個新教授:
<%provide(:title, 'Add a professor') %>
<div class="jumbotron">
<h2> New Professor</h2>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for (@professor) do |f| %>
<%= f.label "First Name" %>
<%= f.text_field :fname %>
<%= f.label "Last Name" %>
<%= f.text_field :lname %>
<%= f.label "School" %>
<%= f.text_field :school %>
<%= f.submit "Add this professor", class: "btn btn-primary" %>
<% end %>
</div>
</div>
</div>
然後在這裏是從Professor_controller.rb
class ProfessorController < ApplicationController
def show
@professor = Professor.find(params[:id])
end
def new
@professor = Professor.new
end
end
代碼
當我更換
<%= form_for (@professor) do |f| %>
在new.html.erb有:
<%= form_for (:professor) do |f| %>
它的工作原理。我上面提到的線程說了一些關於爲控制器添加路由的內容。我的routes.rb看起來像這樣:
Rails.application.routes.draw do
root 'static_pages#home'
get 'about' => 'static_pages#about'
get 'newprof' => 'professor#new'
resources :professor
我不相信在Michael Hartel的書中他做了任何不同的事情。我對Rails仍然很陌生,所以請原諒我,如果這是一個簡單的問題,我已經堅持了幾天,並且嘗試了很多工作,使用了以下實例:professor works但@教授沒有,我不知道爲什麼。
注意:請注意像'x(y)'而不是'x(y)'方法調用帶空格。空間可能會導致您的陳述被解釋爲您可能無意的方式。 – tadman
你的意思是'資源:教授'嗎?缺少複數可能會搞亂你的路由表。 – tadman
謝謝你。它並沒有幫助解決這個問題,但我會盡量做到這一點,這是Java的一個壞習慣,或者我猜想的。 – tfantina