[英]No route matches [POST] “/” - trying to set up mailing list
我觉得这里缺少一些简单的东西。 我设置了MailChimp邮件列表,并且试图使“注册”按钮正常工作,但提交时出错。 我已将其路由回到控制器中create方法中的根目录,但无法正常工作。
signup.rb
class Signup < ActiveRecord::Base
validates_presence_of :email
validates_format_of :email, :with => /\A[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}\z/i
def subscribe
mailchimp = Gibbon::API.new
result = mailchimp.lists.subscribe({
:id => ENV['MAILCHIMP_LIST_ID'],
:email => {:email => self.email},
:double_optin => false,
:update_existing => true,
:send_welcome => true
})
Rails.logger.info("Subscribed #{self.email} to MailChimp") if result
end
end
signups_controller.rb
class SignupsController < ApplicationController
def new
@signup = Signup.new
end
def create
@signup = Signup.new(secure_params)
if @signup.valid?
redirect_to root_path
else
render :new
end
end
private
def secure_params
params.require(:signup).permit(:email)
end
end
的routes.rb
Rails.application.routes.draw do
root 'pages#index'
get '/about' => 'pages#about'
get '/tour' => 'pages#tour'
get '/music' => 'pages#music'
resources :signups, only: [:new, :create]
end
我可以在routes.rb中添加什么来发布? 这是我的耙路输出...
Prefix Verb URI Pattern Controller#Action
root GET / pages#index
about GET /about(.:format) pages#about
tour GET /tour(.:format) pages#tour
music GET /music(.:format) pages#music
signups POST /signups(.:format) signups#create
new_signup GET /signups/new(.:format) signups#new
提前致谢!
更改
<%= simple_form_for :signup do |f| %>
对于
<%= simple_form_for @signup do |f| %>
然后您将路由到SignupsController#create
。
除此之外,您还需要在代码中的任意位置调用Signup#subscribe
才能使整个表单正常工作。 可能您也想将Signup保存到数据库。 我建议在控制器中进行以下更改:
def create
@signup = Signup.new(secure_params)
if @signup.save && @signup.subscribe
redirect_to root_path
else
flash[:error] = 'Ooops!'
render :new
end
end
并记住如果result
成功,则从Signup#subscribe
返回true
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.