试图在嵌套资源中创建子类别的子类别。我的问题是,它似乎没有工作。我得到的全部是undefined method
sub_category_path'for#<#:0x007f8fcde33550> 您的意思是? new_category_path swell as
表单的第一个值不能为空。问题创建和编辑嵌套资源rails 5
我的控制器方法如下:
子类别更新:
@category = @subcategory.category.id
if @subcategory.update(subcategory_params)
flash[:success] = "Subcat name updated"
redirect_to category_sub_category_path(@subcategory)
else
render 'edit'
end
子类别新:
@category = Category.find(params[:category_id]) # TODO:subcategory.category.id?
@category_sub = @category.sub_categories.new
#@subcategory = @category.sub_categories.new
子类别创建:
@subcategory = SubCategory.new(subcategory_params)
if @subcategory.save
flash[:success] = "subcategory created"
redirect_to category_sub_category_path
else
flash[:error] = "subcategory failed"
render 'new'
end
而我的私人方法:
private
def set_sub_category
@subcategory = SubCategory.find(params[:id])
end
def subcategory_params
params.require(:sub_category).require(:name, :category_id)
end
end
我没有小类指数,子类别的观察是基于关闭点击Categories index.html.erb
一个链接,可以在这里看到:
<%@categories.each do |c|%>
<ul class="listing">
<div class="row">
<div class="well col-md-4 col-md-offset-4">
<li class="article-title">
<strong><%= link_to "#{c.name}", category_path(c)%></strong>
<% c.sub_categories.each do |s|%>
<div>
<%=link_to s.name, category_sub_category_path(c,s)%>
</div>
<%end%>
</li>
<li><small>
<!--Pluralise here-->
</small></li>
</div>
</div>
</ul>
<%end%>
然后在我的SubCategory show.html.erb
:
<span class ="badge"><%= link_to "Edit sub category name",
edit_category_sub_category_path([@category, @subcategory])%></span>
在我SubCategory edit.html.erb
:
<%=form_for([@category, @subcategory], :html => {class: "form-horizontal", role: "form"})do |f|%>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :subcategory%>
</div>
<div class="col-sm-8">
<%= f.text_field :name, class: "form-control", placeholder: "Update Sub Category", autofocus: true%>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<%=f.submit class: "btn btn-primary btn-lg"%>
</div>
</div>
<%end%>
任何帮助,将不胜感激
编辑:
错误现在 正在此错误
{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"81lwz0NufTqdOni+4wPRO4Vnmeis9f32+sqSNsxTXZY7ufyR8hTvF86KQwdMjcOP2DQJibK66croW48Uhos9+A==", "sub_category"=>{"name"=>"Gold", "category_id"=>"1"}, "commit"=>"Update Sub category", "category_id"=>"1", "id"=>"1"}
由于参数错号(给定2预计1)
def
subcategory_params params.require(:sub_category).require(:name, :category_id)
end
固定:刚拿出第二.require,不知道为什么我把有
你可以显示堆栈跟踪错误? –
看起来'@category,@ subcategory'之一是零。所以你可以发布控制器子类别的编辑动作。 –
@BalaKarthik编辑动作只是子类别=子类别。find(params [:id]),因为我有一个before_action:set_sub_category – Jack