Rails路由错误,带有基本控制器和form_for

时间:2014-12-10 10:58:01

标签: ruby-on-rails

我有一个帮助台控制器,可以控制诸如Guides模型之类的模型。我试图在helpdesk / new创建一个创建页面但是我似乎遇到了一些路由错误。我确定这是一个简单的错误,所以任何帮助都会受到赞赏:)

服务台/ new.html.erb

<%= form_for @guide do |guide| %>
    <%= guide.text_field :title %>
    <%= guide.text_area :content %>
    <%= guide.text_field :youtube %>
    <%= guide.submit %>
<% end %>

路线

  resources :helpdesk

帮助台控制器

  def new
    @guide = Guide.new
  end

  def create
    @guide = Guide.create(guide_params)
    if @guide.save
          format.html { redirect_to root_path, notice: 'Post was successfully created.' }
          format.json {  }
    else
          format.html { redirect_to root_path, notice: 'Post was successfully created.' }
          format.json {  }
    end
  end

指南模型

class Guide < ActiveRecord::Base
end

错误:

undefined method `guides_path' for #<#<Class:0x7512d98>:0x72f3a80>

在线:

<%= form_for @guide do |guide| %>

4 个答案:

答案 0 :(得分:1)

resources :helpdesk行将为您创建以下路线:

GET /helpdesks
GET /helpdesk/new
POST /helpdesks
GET /helpdesk/:id
GET /helpdesk/:id/edit
PATCH /helpdesk/:id
DELETE /helpdesk/:id

通过将form_for帮助器与名为@guide的实例化新对象一起使用,Rails magic希望您拥有一个指南资源,而不是帮助台资源。

您可以修改form_for以包含您希望表单发布的网址,以便修改为:

<%= form_for @guide, url: helpdesks_path do |f| %>

这会将表单发布到相关的创建路由。您需要对编辑操作执行类似操作。

答案 1 :(得分:0)

您应该GuidesController来控制Guide模型。但是如果您已设置它,那么您可以设置要使用的网址。 Rails会查找guides_path,因为它是Guide模型

<%= form_for @guide, url: helpdesk_path do |guide| %>

答案 2 :(得分:0)

你应该添加:

resources :guides

config/routes.rb文件,你应该好好去

答案 3 :(得分:0)

你应该有GuidesController @japed说,但是对于这种情况,请在config/routes.rb中尝试:

resources :guides, controller: :helpdesk