在此Rails应用程序中,用户可以编写故事并将其添加到集合。在他们编写故事时,用户可以将其添加到现有的集合中,或者通过模式在story/new.html.erb视图中创建一个新的集合。更改为嵌套资源后表格被破坏
它看起来像这样目前
的routes.rb
resources :users
resources :collections
new.html.erb
<%= form_for Collection.new do |f| %>
收藏控制器
class CollectionsController < ApplicationController
def new
@user = current_user # or however
@collection = Collection.new
end
def show
@collection = Collection.friendly.find(params[:id])
end
def create
@collection = current_user.collections.build(collection_params)
if @collection.save
render json: @collection
else
render json: {errors: @collection.errors.full_messages}
end
end
private
def collection_params
params.require(:collection).permit(:name, :description)
end
end
故事控制器
class StoriesController < ApplicationController
def new
@story = Story.new
authorize @story
end
end
现在我要嵌套的路线,使得藏品属于用户本身
resources :users do
resources :collections
然而,导致在这条线
<%= form_for Collection.new do |f| %>
,它不再起作用错误。如何解决这个问题?谢谢。
感谢您的支持。我仍然收到此错误“表单中的第一个参数不能包含零或为空”,用于行<%= form_for [@user,@collection] do | f | %> – Joshua
您需要确保'@ user'和'@ collection'都已定义 – fbelanger
在这种情况下,我应该在哪里定义它们?就我所知,我已经在控制器中这样做了。谢谢。 – Joshua