Я создаю небольшое приложение для новостной рассылки с «двойным ограничением доступа», когда я просто заполняю свою форму (страницу подписки) и отправляю форму, которую я перенаправляю на мою страницу подписки (что все нормально) моя форма добавляет строку запроса к моему атрибуту действия моей формы (http://localhost:3000/newsletter/subscribe?format=)
маршруты:
match 'newsletter/subscription' => 'newsletter_subscriptions#subscription'
post 'newsletter/subscribe' => 'newsletter_subscriptions#subscribe'
контроллер:
class NewsletterSubscriptionsController < ApplicationController
respond_to :html
# GET /newsletter/subscription
def subscription
respond_with (@subscription = NewsletterSubscription.new)
end
# POST /newsletter/subscribe
def subscribe
# If there's already an unconfirmed record with the submitted email, use that object otherwise create a new one based on the submitted email
sub_new = NewsletterSubscription.new
sub_new.email = params[:newsletter_subscription]['email']
sub_old = NewsletterSubscription.find_by_email_and_confirmed sub_new.email, 0
@subscription = sub_old || sub_new
if @subscription.save
Newsletter.delay.subscribed(@subscription) # with delayed_job
else
render :action => "subscription"
end
end
...
end
просмотр (newsletter_subscription / subscription.html.erb):
<h1>New newsletter_subscription</h1>
<%= form_for(@subscription, :url => newsletter_subscribe_path(@subscription)) do |f| %>
<% if @subscription.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@subscription.errors.count, "error") %> prohibited this newsletter_subscription from being
saved:</h2>
<ul>
<% @subscription.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :email %>
<br/>
<%= f.text_field :email %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
PS: Я был бы рад, если бы кто-то мог оценить мой код ruby, пожалуйста (опубликовано выше), я все еще многому учусь и хотел бы увидеть некоторые «рекомендации» или отзывы, я думаю, что я все еще могу многому научиться.