首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置一个简单的Rails 5邮件表单

设置一个简单的Rails 5邮件表单
EN

Stack Overflow用户
提问于 2016-09-27 02:18:29
回答 2查看 629关注 0票数 0

我已经有一段时间没有用Rails编程了.更新所有Rails 5.0语法和更改。

使用Rails 5.0.0.1

使用红宝石2.3.1p112 (2016-04-26修订版54768) x86_64-darwin16 16

我正试图在登陆页面上建立一个简单的联系方式。我走的路线是直接从表单发送电子邮件,而不是将邮件存储到数据库。

我使用的是表格创业板,下面是线程

我知道我在我的控制器上犯了一些新手的错误,但是在跟踪了几个堆栈Q/A之后,我仍然没有完全做到这一点。

该模型正在Rails控制台中成功地发送电子邮件。我只是不能让控制器正常工作。这是一个只有一页的网站,所以我在页面视图文件夹中将部分添加到索引页面中。

错误我得到了

代码语言:javascript
复制
AbstractController::ActionNotFound (The action 'create' could not be found for PagesController):

路由

代码语言:javascript
复制
 Rails.application.routes.draw do
  get 'users/new'
  resources :pages
  root 'pages#index'
end

形式部分

app/views/pages/_form.html.erb

代码语言:javascript
复制
<%= form_tag(pages_path)  do %>
    <div class="row">
        <div class="column width-6">
            <%= text_field_tag 'firstname', nil, class: 'form-element rounded large', placeholder: 'First Name*', tabindex: '1' %>
        </div>
        <div class="column width-6">
            <%= text_field_tag 'lastname', nil, class: 'form-element rounded large', placeholder: 'Last Name*', tabindex: '2' %>
        </div>
        <div class="column width-6">
            <%= email_field_tag 'email', nil, class: 'form-element rounded large', placeholder: 'Email Address*', tabindex: '3' %>
        </div>
        <div class="column width-6">
            <%= text_field_tag 'website', nil, class: 'form-element rounded large', placeholder: 'Website', tabindex: '4' %>
        </div>
        <div class="column width-6">
            <%= text_field_tag 'phone', nil, class: 'form-element rounded large', placeholder: 'Phone', tabindex: '5' %>
        </div>
    </div>
    <div class="row">
        <div class="column width-12">
            <%= text_area_tag 'message', nil, class: 'form-element rounded large', placeholder: 'Message*', tabindex: '6' %>
        </div>
        <div class="column width-12">
            <%= submit_tag 'Send Email', class: 'form-submit button rounded medium bkg-theme bkg-hover-green color-white color-hover-white'  %>
        </div>
    </div>
<% end %>

页面控制器

代码语言:javascript
复制
class PagesController < ApplicationController
  def index
    @contact = Page.new(params[:page])
    if @contact.deliver
      redirect_to :back, :notice => "Thank you for contacting us, We'll get back to you shortly!"
    else
      flash.now[:error] = 'Sorry, it looks like there was an error with your message, Please give us a call or shoot us a text at ....'
    end
  end
end

谢谢你的帮助。这个社区太棒了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-27 02:44:23

您的路径丢失到页面控制器。

config/routes.rb中添加:

resources :pages

在PagesController.rb中

代码语言:javascript
复制
class PagesController < ApplicationController
  def create
    @contact = Page.new(params[:page])
    if @contact.deliver
      redirect_to :back, :notice => "Thank you for contacting us, We'll get back to you shortly!"
    else
      flash.now[:error] = 'Sorry, it looks like there was an error with your message, Please give us a call or shoot us a text at ....'
    end
  end
end

它处理AJAX posts。

票数 0
EN

Stack Overflow用户

发布于 2016-09-27 14:24:36

rails 5中不推荐redirect_to :back,相反,有一个名为redirect_back的新函数。

但是我不会使用index操作来创建一个新页面,即使您没有将它保存到数据库中。相反,我将定义一个名为create的新操作,并最终将其重定向到index。由于您已经在路由中使用了resources :pages,因此不需要在其中添加任何内容。在这里您可以找到默认的路由和它们的操作,以及它们应该用于什么:http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-rails-default

此外,如果您正在使用一个模型,我将考虑使用form_for而不是form_tag。在这里您可以找到一个简单的例子:Started.html#-第一个表单

我希望这有一点帮助:)

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

https://stackoverflow.com/questions/39715033

复制
相关文章

相似问题

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