Кнопки JS для выполнения кода рельсов - PullRequest
1 голос
/ 01 января 2012

Я хочу иметь кнопку, которая при нажатии запускает код rails.Нужен ли для этого javascript?Есть ли какой-нибудь ruby-javascript (.js.rb)?

, если нажата кнопка ... выполнить A Однако я не хочу перенаправлять или переходить в новое представление, просто нужно выполнить код ruby.

1 Ответ

3 голосов
/ 01 января 2012

Да.Попробуйте прибегнуть к помощи ненавязчивого 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 в начале.

В любом случае, надеюсь, это поможет:)

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