ruby-on-rails-4 – 未定义的方法[model] _url

我正在处理嵌套资源项目,并在我的步骤控制器中收到错误:
def create
    @step = Step.new(step_params)

    respond_to do |f|
      if @step.save
      f.html { redirect_to @step,notice: 'Step was successfully created.' }
      f.json { render action: 'show',status: :created,location: @step }
    else
      f.html { render action: 'new' }
      f.json { render json: @step.errors,status: :unprocessable_entity }
    end
  end
end

我得到的错误是:

undefined method `step_url' for #<StepsController:0x007feeb6442198>

我的路线看起来像这样:

root 'lists#index'

resources :lists do
  resources :steps
end

解决方法

在使用嵌套资源时,请更新create操作,如下所示:
def create
    @list = List.find(params[:list_id])
    @step = @list.steps.build(step_params) ## Assuming that list has_many steps

    respond_to do |f|
      if @step.save
      ## update the url passed to redirect_to as below
      f.html { redirect_to list_step_url(@list,@step),status: :unprocessable_entity }
    end
  end
end

运行rake路线以查看可用路线.
步骤#show的路线看起来像

GET lists/:list_id/steps/:id steps#show

使用list_step_url和2个参数@list For:list_id和@step for:id to to show page of Step.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...