尝试创建新记录时UserCrud#new中出现NoMethodError

时间:2019-07-23 14:16:52

标签: ruby-on-rails ruby ruby-on-rails-5

嗨,我在尝试新记录时遇到问题,它显示一条错误消息,该错误消息在我的代码中不存在- 错误消息-

undefined method `user_cruds_path' for #<#<Class:0x00007f403e3162f0>:0x00007f403e3527a0>
Did you mean?  user_crud_path
Extracted source (around line #8):       
  <h2>Create User</h2>

  <%= form_for(@users) do |f| %>

    <%= render(:partial => 'form', :locals => {:f => f}) %>


Rails.root: /home/ayan/Desktop/ror/q

Application Trace | Framework Trace | Full Trace
app/views/user_crud/new.html.erb:8:in `_app_views_user_crud_new_html_erb___1837862909000615994_69956949154020'
Request
Parameters:

None
Toggle session dump
_csrf_token: "DChk63/c8Jl1+JamtZiB03rFYMC/kybhyZr0/JixXDo="
flash: {"discard"=>[], "flashes"=>{"notice"=>"UserCrud updated successfully."}}
session_id: "aa128a12236d1d8d94061ed5de21d7f1"

令人惊讶的是,它发出了其他一些请求消息,但是使用URL路径帮助程序“ user_cruds_path” 的预期方法调用不存在-已更正。 我已经重新启动服务器,但是有同样的问题

  

这是我的控制器类-

class UserCrudController < ApplicationController

  def create
    # Instantiate a new object using form parameters
    @users = UserCrud.new(users_params)
    #@users=UserCrud.new(:name=>"Ayan",:email=>"ac@gmail.com")
    # Save the object
    if @users.save
      # If save succeeds, redirect to the index action
      flash[:notice] = "UserCrud created successfully."
      redirect_to("/user_crud/index/")
    else
      # If save fails, redisplay the form so user can fix problems
      render('new')
    end
  end
  def new
    @users = UserCrud.new({:name => 'Default',:email=>'deault@domain.ext'})
  end
  

我的新记录创建视图:(new.html.erb)

<% @page_title = "New User" %>

<%= link_to("<< Back to List", "/user_crud/", :class => 'back-link') %>

<div class="users new">
  <h2>Create User</h2>

  <%= form_for(@users) do |f| %>

    <%= render(:partial => 'form', :locals => {:f => f}) %>

    <div class="form-buttons">
      <%= f.submit("Create User") %>
    </div>



  <% end %>
</div>

routees.rb

      resources :user_crud do
    member do
      get :delete
    end
  end

很奇怪,看到错误消息所引用的路径名根本不存在, 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

该错误在表格上,您未指定正确的路径。如果未设置此选项,Rails将查找“默认路径”,在这种情况下为static_assert

答案 1 :(得分:0)

form_for(@users,url:“ / user_crud /”)可以工作,但是如果有人建议什么是合适的URL帮助器"/user_crud/"

编辑:

我从Marcelo的Comment中得到了它,并通过命令rails routes找到了路线 并发现user_crud_index_url的URL帮助器为"/user_crud/"

所以最后的答案是:

form_for(@users,url: user_crud_index_url)