首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby on Rails -静态页面联系人表单

Ruby on Rails -静态页面联系人表单
EN

Stack Overflow用户
提问于 2014-06-12 09:11:22
回答 2查看 575关注 0票数 1

我遵循了Michael Hartl的Ruby on Rails教程,并使用那里的模板为我的应用程序创建了一个联系人页面。但是,我想添加一个具有form方法的联系人页面。对于相同的页面,我使用与Hartl相同的静态页面控制器。我需要让我的联系人页面正常工作。

代码语言:javascript
运行
复制
<h1>Contact us</h1>

<%= form_for @page, url: static_pages_contact_path do |f| %>

  <p>
    <%= f.label :title %>
    <%= f.text_field :title %>
  </p>

  <p>
    <%= f.label :email %>
    <%= f.text_area :email %>
  </p>

  <%= f.submit 'Send message' %>

<% end %>

我得到的错误消息涉及第一行不能为零或类似的东西。根据记录,这里是我的静态页面控制器。

代码语言:javascript
运行
复制
class StaticPagesController < ApplicationController

  def show
    @page = StaticPage.find(params[:id])
  end

  def new
    @page = Page.new
  end

  def create
    @page = Page.find(params[:page])
  end
end

运行rake路径显示了这一点

代码语言:javascript
运行
复制
Prefix Verb   URI Pattern                     Controller#Action
       users_new GET    /users/new(.:format)            users#new
   favorite_game PUT    /games/:id/favorite(.:format)   games#favorite
           games GET    /games(.:format)                games#index
                 POST   /games(.:format)                games#create
        new_game GET    /games/new(.:format)            games#new
       edit_game GET    /games/:id/edit(.:format)       games#edit
            game GET    /games/:id(.:format)            games#show
                 PATCH  /games/:id(.:format)            games#update
                 PUT    /games/:id(.:format)            games#update
                 DELETE /games/:id(.:format)            games#destroy
           users GET    /users(.:format)                users#index
                 POST   /users(.:format)                users#create
        new_user GET    /users/new(.:format)            users#new
       edit_user GET    /users/:id/edit(.:format)       users#edit
            user GET    /users/:id(.:format)            users#show
                 PATCH  /users/:id(.:format)            users#update
                 PUT    /users/:id(.:format)            users#update
                 DELETE /users/:id(.:format)            users#destroy
        sessions POST   /sessions(.:format)             sessions#create
     new_session GET    /sessions/new(.:format)         sessions#new
         session DELETE /sessions/:id(.:format)         sessions#destroy
 users_favorites GET    /users/favorites(.:format)      users#favorites
static_pages_about GET    /static_pages/about(.:format)   static_pages#about
static_pages_contact GET    /static_pages/contact(.:format) static_pages#contact
static_pages_help GET    /static_pages/help(.:format)    static_pages#help
          signup GET    /signup(.:format)               users#new
          signin GET    /signin(.:format)               sessions#new
         signout DELETE /signout(.:format)              sessions#destroy

我想这就是我需要的所有信息了。

EN

回答 2

Stack Overflow用户

发布于 2014-06-12 09:39:35

我相信您示例中的static_pages_contact_path很可能为零。我相信你是在尝试引用由资源路由为你生成的路径中的一条。您可以尝试使用(绝对或相对) URL或以某种方式使用资源路由。然而,控制器不是一种资源。

票数 0
EN

Stack Overflow用户

发布于 2014-06-12 15:06:38

你遇到的问题如下:

--

POST

您的routes只将static_pages_contact定义为GET请求

您的form会想要提交一个POST请求,而您没有针对该请求的路由,因此您会收到这个错误。解决这个问题的方法有两个-

当前控制器问题在您的控制器中创建一个控制器请求在controller

  • Fix

中执行相应的操作

代码语言:javascript
运行
复制
#config/routes.rb
resources :static_pages, only: [] do
    collection do
        get :about, action: "show"
        get :help, action: "show"
        get :contact, action: "show"
        post :contact_submit
    end
end

#app/controllers/static_pages_controller.rb
class StaticPagesController < ApplicationController
   def contact_submit
     ... perform form submit here
   end
end

这应该会解决你的问题

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

https://stackoverflow.com/questions/24175045

复制
相关文章

相似问题

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