Направляющие: Сохраните параметрические усилители после отправления

Скажем, у Вас было веб-приложение, где люди могли отправить ссылки, ссылки для их собственных сайтов и ссылки для веб-сайта, которым они не владеют. Форма представления является в значительной степени тем же в обоих случаях кроме тех случаев, когда они отправляют домен ссылки.

Если бы пользователь отправляет из списка их собственных зарегистрированных веб-сайтов, они получили бы выпадающий список своих веб-сайтов.

Если пользователь отправляет ссылку, пользователь вводит домен в поле, значение которого я вхожу в модель "ссылки" через attr_accessor. Модель "ссылки" затем выполняет find_or_create метод на том домене.

Прямо сейчас мое решение является неудовлетворительным: Когда пользователь нажимает "Submit Link", я поместил? other=prompt в URL и затем имеют этот вид условного выражения:

<% if params[:other] == "prompt" %>
    <div class="prompt_form">

<h2>This link is for:</h2>
<span class="blue_button"><%= link_to "My Website", new_link_path%></span> <span class="blue_button"><%= link_to "Another User's Site", new_link_path(:other => "yes")%></span>
</p>

Когда пользователь делает выбор между этими двумя опциями в рендеринге формы по-другому:

<% if params[:other] == "yes" || current_user == nil %>
                    <strong>Website Domain:</strong><br />
                    <%= f.text_field :unclaimed_domain %><br />
            <% elsif current_user %>         
                <% if current_user.websites.size > 1 %>
                    <p>
                        <strong>Website Domain:</strong><br />
                        <%= f.collection_select :website_id, current_user.websites.valid, :id, :domain, {:include_blank => true}  %> <%= error_message_on :link, :website %><br />
                        <%= link_to "Add a Website", new_website_path %>
                    </p>
                <% else %>
                    <p>
                        <strong>Website Domain:</strong><br />
                        <%= f.collection_select :website_id, current_user.websites.valid, :id, :domain %><br />
                        <%= link_to "Add a Website", new_website_path %>
                    </p>
                <% end %>

Проблема с этим состоит в том что, если пользователь совершает ошибку и приводит к сбою некоторые проверки, "рендеринг: действие => 'новый'" код выполнен, и вся информация в параметрических усилителях теряется. Существует ли способ сохранить ту информацию или возможно другой способ сделать это в целом?

5
задан Kenji Crosland 4 August 2010 в 00:07
поделиться