Как заставить Rails визуализировать вид и автоматически прокрутить вниз? - PullRequest
8 голосов
/ 30 января 2011

У меня отвратительно большая целевая страница с регистрационной формой в середине.Если я отправляю форму и проверка не проходит, я хочу снова отобразить целевую страницу, но хочу, чтобы она была прокручена до формы регистрации, чтобы они могли видеть ошибки и вносить изменения.Можно ли перейти к форме с помощью метода render, или мне нужно сделать redirect_to "account/new#theFormID"?

Я бы не хотел делать перенаправление, потому что вы должны сохранить информацию формы в сеансеЗаполните форму и так далее, и я хочу придерживаться обычного

if @resource.save then redirect_to ...
else render "new"
end

Ответы [ 5 ]

27 голосов
/ 20 февраля 2011

Поместите директиву привязки в форму, и вы все еще можете положиться на: рендеринг из контроллера ...

form_for(@my_model, :url => { :action => "create" , :anchor => "my_anchor" })
4 голосов
/ 30 января 2011

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html

redirect_to profile_path(@profile, :anchor => "wall")

Так вы проходите якоря.

1 голос
/ 13 февраля 2013

Я прокрутил на якорь с помощью render, используя глобальную переменную и Javascript (как намекнул Ибрагим).

На моем контроллере у меня было это:

@anchor = "my_anchor"
render :action => "edit"

И на моемстранице, я проверил, есть ли у меня глобальный @anchor, и если да, то перейдите на него с помощью Javascript:

<% if @anchor %>
  <script type="text/javascript">
    window.location.hash = "<%= @anchor %>";
  </script>
<% end %>
1 голос
/ 20 февраля 2011

Использовать JavaScript?

<script>
window.location.hash="ANCHOR";
</script>
1 голос
/ 20 февраля 2011

И еще одна вещь ... если это ссылка, которую я на самом деле использую, вам нужно добавить уникальную param, чтобы браузер решил, что отправляет что-то новое, в противном случае он просто обновляется без попадания на сервер.Я использую:

link_to "REFRESH", refresh_my_model_path(@my_model, :anchor => "my_anchor", :options => {:id => Time.now} )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...