我正在try 创建食谱应用程序,用户可以采取.该应用程序的一部分是管理用户创建食谱和说明.
-
有一个包含所有用户的用户模型/表.这有一个 控制器.
-
还有一个食谱表格,里面有所有创建的食谱.
-
最后还有一个指令表,每个指令表都与一个 食谱
我正在努力实现的是管理员用户访问一个页面来创建一个食谱.这个页面也有一个现有食谱的列表.用户可以点击其中一个食谱,这会将用户带到一个编辑页面,在那里他们可以编辑食谱的说明.编辑页面显示指令列表.您还可以添加说明.
问题是配方创建页面上的form_with
显示错误:
undefined method `recipes_path'
我没有食谱管理员.唯一的控制器是用户控制器.在这个控制器中,我定义了一个admin
操作、一个create_recipe
操作、一个edit_recipe
操作和一个update_recipe
操作:
def admin
@recipe = Recipe.new(
recipe_params
)
@Recipes = Recipe.all
end
def create_recipe
if @recipe.save
redirect_to root_url
else
render 'new'
end
end
def edit_recipe
@recipe = Recipe.find(params[:id])
@recipe_instructions = RecipeInstructions.where(recipe_id: @recipe.id)
end
def update_recipe
@recipe = Recipe.find(params[:id])
@recipe_instructions = RecipeInstructions.where(recipe_id: @recipe.id)
if @recipe.update(recipe_params)
redirect_to root_url
else
render :edit
end
路由如下所示:
get 'admin', to: 'users#admin', as: :admin
get 'recipes/:id/edit', to: 'users#edit_recipe', as: :edit_recipe_instructions
post 'recipes/:id/update', to: 'users#update_recipe', as: :update_recipe_instructions
以下是食谱页面的视图:
<div id = "signup-form-container">
<%= form_with model: @recipe do |newRecipe| %>
<h3 class="signup-form-heds"> <%= newRecipe.label :recipe_name, "Recipe name" %></h3>
<%= newRecipe.text_field :recipe_name, class: "form-inputs form-text-inputs"%>
<%= newRecipe.submit "SAVE", class: "btns submit-btns", id: "signup-submit-btn" %>
<% end %>
</div>
虽然我明白错误所在.我还担心说明书页面会发生类似的错误,因为我使用的是类似的表单,但有多个型号.
<%= form_with model: [@recipe, @recipe_instructions], url: update_recipe_instructions_path(@recipe) do |newRecipe| %>
<%= newRecipe.fields_for :recipe do |recipeData| %>
<h3 class="signup-form-heds"> <%= recipeData.label :recipe_name, "Recipe name" %></h3>
<%= recipeData.text_field :recipe_name, class: "form-inputs form-text-inputs"%>
<% end %>
<%= newRecipe.fields_for :recipe_instructions do |recipeInstructions| %>
<h3 class="signup-form-heds"> <%= recipeInstructions.label :instruction, "Instruction" %></h3>
<%= recipeInstructions.text_field :recipe_instructions , class: "form-inputs form-text-inputs"%>
<% end %>
<%= newRecipe.submit "SAVE", class: "btns submit-btns", id: "signup-submit-btn" %>
<% end %>
</div>
我认为是模型没有控制器的事实导致了这个问题?