ruby-on-rails – form_for undefined方法`model_name’for :: A
发布时间:2020-12-17 04:01:47 所属栏目:百科 来源:网络整理
导读:我一直有使用form_for渲染的问题.我想要一个_form.html.erb部分来处理我的问题记录的创建和编辑.当我走下去使用的路线 %= form_for(@problem) do |f| % 我收到以下错误: undefined method `model_name' for Problem::ActiveRecord_Relation:Class 在我的rou
我一直有使用form_for渲染的问题.我想要一个_form.html.erb部分来处理我的问题记录的创建和编辑.当我走下去使用的路线
<%= form_for(@problem) do |f| %> 我收到以下错误: undefined method `model_name' for Problem::ActiveRecord_Relation:Class 在我的routes.rb中我有以下内容: PW::Application.routes.draw do root to: 'problems#index',via: :get resources :problems do member do post 'up_vote' post 'down_vote' end end 我也有问题控制器 class ProblemsController < ApplicationController include Concerns::Votes def new @problem = Problem.new end def index @problem = Problem.all end def show @problem = find_problem end def create @problem = current_user.problems.new(problem_params) @problem.save redirect_to @problem end private def find_problem @problem = Problem.find(params[:id]) end def problem_params params.require(:problem).permit(:name,:description,:url) end end 如果我指定以下内容,我可以让它工作: <%= form_for @problem.new,url: {action: "create"} do |f| %> 但是,如果我必须为编辑单独制作一个部分,我觉得这会重复我自己.我真的无法解决为什么这不想工作.可能是我在index.html.erb上呈现表单吗? 任何帮助或方向将非常感谢. 解决方法
大声笑为什么我之前没有看到这个?
是的,这完全是问题所在.原因在这里: Problem::ActiveRecord_Relation:Class 您将获得一个关系对象(定义一个集合,而不是单个记录).这是由于: #controller def index @problem = Problem.all end 错误是beacuse form_for需要一条记录.您需要在控制器和放大器中使用它.它会工作: #controller def index @problem = Problem.new @problems = Problem.all end #view <%= @problems.each do |problem| %> <%= problem.name %> <% end %> <%= form_for @problem do |f| %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |