【问题标题】:Ruby on Rails Error - NoMethodError in Admin::Store#newRuby on Rails 错误 - Admin::Store#new 中的 NoMethodError
【发布时间】:2015-12-01 09:06:00
【问题描述】:

Ruby on Rails 错误 - Admin::Store#new 中的 NoMethodError
这是我的代码和项目结构。我的代码有什么问题?
我生成了这个命令“Rails generate controller admin/store”

生成的控制器

控制器

/home/rok/Development/Pan/app/controllers/admin/store_controller.rb

    class Admin::StoreController < ApplicationController
             def new
               @store = Store.new
               #render "admin/store/new"
             end
     end

观看次数

    /home/rok/Development/Pan/app/views/admin/store/new.thml.erb

     <h1>xx </h1>
     <p> xx </p>

     <%= simple_form_for (@store) do |form| %>

     <div class="form-inputs">
             <%= form.input :store_name, label: "xx" %>
             <%= form.input :store_address, label: "xx" %>
             <%= form.input :store_phone, label: "xx" %>
             <%= form.input :store_logitude, label: "xx" %>
             <%= form.input :store_latitude, label: "xx" %>
     </div>

     <div class="form-actions">
             <%= form.button :submit %>
     </div>
     <% end %>

型号

    /home/rok/Development/Pan/app/models/store.rb

    class Store < ActiveRecord::Base
      validates :store_name, presence: true
      validates :store_address, presence: true
      validates :store_phone, presence: true
      validates :store_longitude, presence: true
      validates :store_latitude, presence: true
    end

Admin::Store#new 中的 NoMethodError
显示 /home/rok/Development/Pan/app/views/admin/store/new.html.erb
提出第 4 行的位置:

# 的未定义方法 `stores_path' 提取的源代码(第 4 行附近): 2 3 4 5 6 7

   <p> xx </p>

   <%= simple_form_for (@store) do |form| %>

   <div class="form-inputs">
       <%= form.input :store_name, label: "xx" %>

Rails.root: /home/rok/Development/Pan

怎么了?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    你最好把你的名字控制器改成复数形式

    rails generate controller admin/stores
    

    routes.rb

    你必须这样做:

    namespace :admin do
      resources :stores
    end
    

    然后,在你的表格中写下它:

    <%= simple_form_for ([:admin, @store]) do |form| %>
    <% end %>
    

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      您还需要提供命名空间:-

      <%= simple_form_for ([:admin,@store]) do |form| %>
      <% end %>
      

      【讨论】:

      • 我为#:0x007f627c13f930>显示了这个错误未定义的方法`admin_stores_path'
      • 请发布您的config/routes.rb
      • @Rajarshi Das get 'admin/store/list' => 'admin/store#list' get 'admin/store/new' => 'admin/store#new'
      • 啊这就是为什么namespace :admin do resources :stores end试试这个
      • @RajarshiDas 我没有路线匹配 [GET] "/admin/store/new"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多