首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoMethodError,#<#<Class:0xbbb3ed0>:0xbbb34b0>的未定义方法`permits_path‘

NoMethodError,#<#<Class:0xbbb3ed0>:0xbbb34b0>的未定义方法`permits_path‘
EN

Stack Overflow用户
提问于 2016-09-21 00:09:13
回答 3查看 82关注 0票数 1

我是新来ROR的。我正在尝试创建一个用于申请停车许可的页面。我遇到了这个问题

我找不到问题所在。也许我漏掉了什么。任何帮助都是非常感谢的。

这是我的permit_controller.rb

代码语言:javascript
复制
class PermitController < ApplicationController
  before_action :set_permit, only: [:show, :destroy]
  def index
    @permit = Permit.all
  end

  def new
    @permit = Permit.new
  end

  def create
    @permit = Permit.new(user_params)
    if @permit.save
      redirect_to root_path
    else
      flash[:success] = "Welcome to your profile!"
    end
  end

  def destroy
  end

  def show
    @permit = Permit.find(params[:id])
  end

  private
  # Use callbacks to share common setup or constraints between actions.
  def set_permit
    @permit = Permit.find(params[:id])
  end

  # Never trust parameters from the scary internet, only allow the white list through.
  def permit_params
    params.require(:permit).permit(:vehicle_type, :name, :studentid, :department, :carplate, :duration,:permitstart,:permitend)
  end
end

这是我的许可证/new.html.erb

代码语言:javascript
复制
<% provide(:title, 'New Permit') %>
<h1>Permit Application</h1>

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@permit) do |f| %>

        <%= render 'shared/error_messages' %>
        <%= f.label :"Vehicle Type" %>
        <%= f.text_field :vehicle_type, class: 'form-control' %>

        <%= f.label :name %>
        <%= f.text_field :name, class: 'form-control' %>

        <%= f.label :"Student ID" %>
        <%= f.text_field :studentid, class: 'form-control' %>

        <%= f.label :department %>
        <%= f.text_field :department, class: 'form-control' %>

        <%= f.label :"Car Plate" %>
        <%= f.text_field :carplate, class: 'form-control' %>

        <%= f.submit "Confirm", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

这是我的route.rb

代码语言:javascript
复制
Rails.application.routes.draw do
  resources :users
  resources :permit
  get 'permit/destroy'

  get 'permit/show'

  root 'static_pages#home'

  get 'homepage/index'
  post 'permit' => 'permit#create'
  get 'permitapplication' => 'permit#new'
  get 'adminlogin' => 'admin_controller#index'
  get 'contact'=> 'static_pages#contact'
  get 'about' => 'static_pages#about'
  get 'signup' => 'users#new'
  get 'help' => 'static_pages#help'
  post 'users' => 'users#create'
  get 'login' => 'sessions#new' #Page for a new session
  post 'login' => 'sessions#create' #Create a new session
  delete 'logout'=>'sessions#destroy' #Delete a session


  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
EN

回答 3

Stack Overflow用户

发布于 2016-09-21 00:13:02

相反,resources :permit使用resources :permits

票数 2
EN

Stack Overflow用户

发布于 2016-09-21 00:17:44

这里最大的问题是您的routes.rb文件中没有permit/new。

正如前面提到的,使用rails进行资源调用可能会更好

在routes.rb中

resources :permits

并删除行

get 'permit/destroy'

get 'permit/show'

等。

票数 2
EN

Stack Overflow用户

发布于 2016-09-23 02:17:36

我将尝试整合我们的各种答案和评论。

要解决当前的问题,请在config/routes.rb中将resources :permit更改为resources :permits。这将公开您的应用程序中使用的所有七个RESTful路由。(这也会使自定义permit路由过时,除非您在各自的表单中显式调用它们。)有关RESTful路由/资源的信息,请访问:http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

为什么这很有价值?

这是您的应用程序如何知道将控制器操作与视图(以及表单)结合使用的方法。假设许可控制器中有一个编辑操作,而app/views/permits/edit.html.erb有一个表单。在这个页面的编辑表单中,您只需要使用form_for @permit和Rails就可以完成所有其他工作。它知道您正在使用这条特定的路由。我建议您阅读有关Rails.中路由的内容

请记住,Ruby on Rails是经过精心设计的,目的是让您作为开发人员更容易操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39598983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档