![](/img/trans.png)
[英]undefined method `model_path' for #<#<Class:> UPDATE method
[英]undefined method `model_path' when using resource :model for routing in form_for edit
对此也存在一些类似的问题,但我不清楚答案。 我正在尝试使用特定模型的 CRUD操作制作一个简单的Rails应用程序。 我特别难以使用form_for函数来更新记录。
我的routes.rb文件:
Rails.application.routes.draw do
root 'main#index'
devise_for :users
resource :models
get 'main/index'
end
我的models_controller.rb
class ModelsController < ApplicationController
def edit
@nc = Model.find(params[:id])
end
def update
@nc = Model.find(params[:id])
@nc.update(model_params)
if @nc.save
flash[:success] = 'Changes saved.'
redirect_to model_path
else
flash[:error] = @nc.errors.empty? ? 'Error' : @nc.errors.full_messages.to_sentence
render :action => :edit
end
end
def model_params
params.require(:model).permit(:first_name, :last_name)
end
end
最后是我的模型/edit.html.erb
<%= form_for @nc do |nc| %>
<div class='container-fluid'>
<form role='form'>
<div class='row'>
<div class='col-md-6'>
<div class='form-group'>
<%= nc.label :first_name %>
<%= nc.text_field :first_name, :class => 'form-control', :value => @nc.first_name != nil ? @nc.first_name : '' %>
</div>
<div class='form-group'>
<%= nc.label :last_name %>
<%= nc.text_field :last_name, :class => 'form-control', :value => @nc.last_name != nil ? @nc.last_name : '' %>
</div>
</div>
</div>
<div class='row'>
<div class='col-md-12'>
<%= nc.submit 'Submit', class: 'btn btn-primary' %> <%= link_to 'Cancel', :back, class: 'btn btn-default' %>
</div>
</div>
</form>
</div>
<% end %>
当我实际运行此程序并尝试编辑模型时,在提交任何内容之前,我会得到:
undefined method `model_path' for #<#<Class:0x00000003cb52c0>:0x007fb7022b18b0>
Did you mean? models_path
更改
redirect_to model_path
至
redirect_to @nc
如果您运行耙路径,您将看到model_path
需要一个model_path
使用@nc告诉Rails进行您想要的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.