Rails: сохранить параметры после отправки - PullRequest
5 голосов
/ 04 августа 2010

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

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

Если пользователь отправляет ссылку, он вводит домен в поле, значение которого я получаю в модели "ссылка" через attr_accessor.Затем модель «ссылка» выполняет метод find_or_create в этом домене.

Сейчас мое решение неудовлетворительно: когда пользователь нажимает «Отправить ссылку», я вставляю подсказку? Other = в 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 %>

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

1 Ответ

8 голосов
/ 04 августа 2010

У меня есть только смутное понимание вашей проблемы, но, кажется, вы хотите этого:

<input name="other" value="<%= params[:other] %>" type="hidden">

Таким образом, текущее значение other будет отправлено повторно, и, если проверка не пройдена, будетвсе еще быть доступным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...