Да.Попробуйте прибегнуть к помощи ненавязчивого JavaScript.В частности, для rails следующим является общий принцип (rails v 3.0 или выше), который чаще всего используется для форм.
Ниже приведен пример использования удаленной формы для отправки «сообщения» через javascript.
Сначала настройте контроллер для ответа на JavaScript.Так, например, действие «создать» будет выглядеть примерно так:
def create
@message = Message.new(params[:contestant])
#do whatever you want
respond_to do |format|
if @contestant.save
format.js
format.html { redirect_to(@message, :notice => 'Message was successfully created.') }
else
#deal with errors here/ redirect wherever you want
end
Теперь создайте файл с именем «create.js.erb».Это следует соглашениям по присвоению имен rails для действий контроллера, но обратите внимание на расширение js.erb.
В этом коде вы можете поместить любой javascript, на который хотите ответить, и в rails 3.1 или можете использовать jquery по умолчанию какЧто ж.
$(#messageform).html("<h3>Thanks for sending your message we will be in touch shortly</h3>");
Тогда, по вашему мнению, вы хотите инициировать этот вызов javascript, вы бы поместили такую форму:
<div id="messageform">
<%= form_for @message, :remote => true do |f| %>
<h2>Send us a message</h2>
<p>
<%= f.label :email %>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :message %>
<%= f.text_area :message %>
</p>
<p>
<%= f.submit "Send message!"%>
</p>
<% end %>
</div>
Это стандартная форма form_for.Единственное, на что следует обратить внимание, это параметр: remote => true в начале.
В любом случае, надеюсь, это поможет:)