【发布时间】:2017-01-30 17:06:47
【问题描述】:
我正在构建一个时事通讯管理表单,我想使用 simple_form。 email 参数应该通过POST 方法发送到email_subscriber#manage 控制器/动作。
routes.rb
get 'email/login' => 'email_subscribers#login', as: 'email_login'
get 'email/manage' => 'email_subscribers#manage', as: 'email_manage'
email_subscribers_controller.rb
def login
end
def manage
@subscriber = EmailSubscriber.find_by_email(safe_params(:email))
unless @subscriber
# redirect_to email_login_path, notice: 'That email does not exist.'
end
end
电子邮件/登录表单
<%= render :layout => 'application/container' do %>
<%= simple_form_for(@subscriber, path: :email_manage_path, method: :get) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :email, as: :email %>
</div>
<div class="form-actions">
<%= f.button :submit, value: 'Manage Subscription' %>
</div>
<% end %>
登录路径是表单所在的位置。它允许用户输入他们的电子邮件以取消订阅时事通讯。
表单应重定向到manage 操作,传递没有对应模型的email 参数。
当前表单不起作用。由于某种原因,它重定向到EmailSubscribers 索引页面。
将email_manage 路由更改为POST 会导致missing route POST email/login,因为表单发布到email_manage_path,而不是email_login_path
谢谢
编辑:
rake 路由输出(在同一选项卡中打开)
【问题讨论】:
-
你能发布你的路线吗?
rake routes -
添加了一个包含完整
rake routes输出的 pastebin
标签: ruby-on-rails ruby simple-form