没有路线匹配[POST] Bloc

时间:2015-05-24 07:45:47

标签: ruby-on-rails controller routes

好吧,我知道有一百万个帖子,但我似乎无法找到解决方法。我刚刚开始使用rails,刚刚开始我的第一个独奏项目,经过了一个在集团上的指导。

我遇到了这个错误:

没有路线匹配[POST]“/ registered_applications / new”

以下是我的路线:

Rails.application.routes.draw do

  resources :registered_applications 

  devise_for :users

  get 'about' => 'welcome#about'

  root :to => 'welcome#index'
end

这是表格。单击提交时,我们会遇到错误:

  

我正在尝试<%= form_for @application do |f| %>,但我收到了错误,所以我改为此。这里的任何建议也将受到赞赏。

<h3 class="roboto">Register a new application</h3>

<div class="row">
  <div class="col-md-4">
    <p>Application Registration Guidelines:</p>
    <ul>
      <li>Applications must be named.</li>
      <li>You must provide a URL.</li>
      <li>You must be signed in to add an application to your account.</li>
    </ul> 
  </div>
  <div class="col-md-8 app-reg">
    <%= form_for(:application) do |f| %>
      <div class="form-group">
        <%= f.label :name %>
        <%= f.text_field :name, class: 'form-control', placeholder: "Application name" %>
      </div>
      <div class="form-group">
        <%= f.label :URL %>
        <%= f.text_field :URL, class: 'form-control', placeholder: "Application URL" %>
      </div>
      <div class="form-group">
        <%= f.submit "Save", class: 'btn btn-primary' %>
      </div>
    <% end %>
  </div>
</div>

这是我的控制器:

  

绝对是正在进行中的工作

class RegisteredApplicationsController < ApplicationController
  def index
    @applications = Application.all
  end

  def new
    @application = Application.new 
  end

  def show
    @application = Application.find(params[:id])
  end

  def edit
    @application = Application.find(params[:id])
  end

  def create 
    @application = Application.new(application_params)
    if @application.save
      flash[:notice] = "Application was saved successfully."
      redirect_to @application
    else
      flash[:error] = "There was an error creating the application. Please try again."
      render :new
    end
  end
end

private

def application_params
  params.require(:application).permit(:name, :URL)
end

如果您认为需要查看,请参阅应用程序模型:

class Application < ActiveRecord::Base
  belongs_to :user
end

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您应该更改资源:registered_applications到resources:routes.rb中的应用程序,因为Application是您的模型,而应用程序是被视为资源的表的名称。

您收到错误是因为没有名为registered_applications的资源或表,因为您已将表命名为应用程序并将模型命名为Application。

答案 1 :(得分:0)

从你的代码中我假设你在应用程序创建表单中按下post按钮时会出现错误,对吧?因此,您应该在表单生成中定义使用@application而不是:application作为模型的模型。正如你所写的那样,你已经尝试过,但出了点问题:如果你明确指出了什么,那将有助于解决问题。

resources registered_application不会为您创建POST操作路由到registered_applications / new。只发布到registered_applications

更新: 我也不建议你将模型,类变量命名为可能被命名的其他重要变量/模型:比如你Application类。这可能是痛苦奇怪错误的根源