我有一个非常类似的问题,在这里问这个问题:for,然而,那里的答案使我困惑。
在开发我正在开发的应用程序之前,我阅读了Michael的Rails教程,在我创建模型时,我试着复制他创建用户模型时所做的事情。我的应用程序是为大学教授设计的数据库,所以我使用的模型被称为“教授”,但它与“用户”的概念是相同的。
下面是我的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我不相信在迈克尔·哈特尔的书中他做了什么不同的事。我对Rails还很陌生,所以请原谅我,如果这是一个简单的问题,我已经坚持了几天了,我已经尝试了无数的工作,使用的例子是:教授工作,但@教授不知道,我不知道为什么。
发布于 2016-02-17 16:50:24
在Rails环境中,了解各种名称的多元化需求是非常重要的。请务必将您的资源声明为复数:
resources :professors以单数声明它可能会破坏自动生成的路由,您将得到类似于professor_path而不是professors_path的东西。您可以检查这些内容是什么:
rake routes如果您收到x_path丢失的错误,请检查路由列表中是否有一个名为x的路由。最常见的情况是,它被错误地标记,一个错误,或者您没有正确地将它多元化。
https://stackoverflow.com/questions/35462384
复制相似问题