私はニュースレター管理フォームを作成しています。私はsimple_formを使いたいと思います。 email
パラメータはPOST
メソッドを介してコントローラ/アクションemail_subscriber#manage
に送信する必要があります。simple_formを使用してコントローラに任意のパラメータを送信する方法
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 %>
ログインルートは、フォームの場所です。それはニュースレターからの退会のためにユーザーが彼らの電子メールを入力することを可能にする。
対応するモデルが存在しないemail
パラメータを渡して、フォームをmanage
アクションにリダイレクトする必要があります。
現在のフォームは機能しません。何らかの理由で、EmailSubscribers
インデックスページにリダイレクトされます。 POST
にemail_manage
ルートを変更すると、フォームがemail_manage_path
に掲載されているので意味がありませんmissing route POST email/login
、ないemail_login_path
おかげ
EDIT原因:
すくいルート出力を(この同じタブで開きます)
を? 'rake routes' –
完全な' rake routes'出力を持つペーストビンを追加しました – danielbker