在这里撕扯我的头发。我有一个品牌模型,这个有很多项目,项目属于品牌。我正在尝试在品牌内部创建项目,但我遇到了以下错误:
undefined method `projects_path'
一切似乎都井然有序。我的一些代码可以在下面找到:
路线
resources :brands do
resources :projects do
resources :ideas
end
end
品牌
<%= link_to 'Create New Project', new_brand_project_path(@brand) %>
路由工作正常,因为我发送的链接是品牌/ brand_id / projects / new - 但这是我收到我之前提到的错误的地方。
更新 - 原来的问题已修复,现在当我保存项目时我遇到了同样的错误,但这次'创建'出了问题......
class ProjectsController < ApplicationController
# GET /projects
# GET /projects.json
def index
@projects = Project.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @projects }
end
end
# GET /projects/1
# GET /projects/1.json
def show
@project = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @project }
end
end
# GET /projects/new
# GET /projects/new.json
def new
@brand = Brand.find(params[:brand_id])
@project = Project.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @project }
end
end
# GET /projects/1/edit
def edit
@project = Project.find(params[:id])
end
# POST /projects
# POST /projects.json
def create
@project = Project.new(params[:project])
respond_to do |format|
if @project.save
format.html { redirect_to @project, notice: 'Project was successfully created.' }
format.json { render json: @project, status: :created, location: @project }
else
format.html { render action: "new" }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
答案 0 :(得分:0)
将@brand = Brand.find(params[:brand_id])
添加到您的所有方法中。
请记住,视图每次都会返回到控制器,并且无法记住上次设置的内容。 new
方法构建html表单,但create
方法用于获取数据并创建新记录。但是create
方法不知道你在new
中做了什么,它只能从它给出的参数数据中起作用。