Rails 3, удаленное перенаправление форм, хотите остаться на странице, ошибка шаблона? - PullRequest
1 голос
/ 01 апреля 2012

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

Пожалуйста, помогите мне преодолеть эту кирпичную стену глупости.

Я хочу иметь возможность нажать на кнопку отправки и не покидать страницуКроме того, для этой страницы, чтобы даже не пытаться перезагрузить!Это достигается с помощью ajax, и я прочитал несколько руководств по нему, у меня даже была работа над другим проектом раньше.В этом случае я прячу div с помощью scriptaculous.В предыдущей версии представления формы ajax я использовал (псевдокод)

   render update do |page| 
       page replace html with this div 
   end

Но на этот раз я на самом деле не собираюсь заменять div или что-то еще, я просто скрываю это с помощью scriptaculous с помощьюСобытие onclick ....

Все, что я хочу, это чтобы форма действительно отправлялась и чтобы она исчезла.

Итак, я работаю над формой, вот тег формы:

        <%=form_for :call_back_request, :remote => true, :url => {:action => "call_back_request_cbrsent"} do |c| %>

Как вы можете видеть, это : remote => true

У меня есть различные поля ввода формы, которые я считаю более или менее неактуальными, вот соответствующие части:

Это поле является частью кнопки отправки, поэтому я включил ее здесь:

    <%= hidden_field_tag :instructor_id, "empty", :id=>"instructor_hidden_field" %>

это кнопка отправки, как вы можете видеть, я использую scriptaculous, чтобы скрыть div, это div, в котором находится кнопка отправки.

Это может повлиять на это таквместо того, чтобы удалить этот вопрос из этого стекового потока, я включил его.

    <%=c.submit 
    :value=>"SEND", 
    :style=>"width:90px; height:33px; padding-bottom:0; font-size:1em;", 
    :class=>"lpl-go-button lpl-go-button-submit", 
    :onclick=>"Effect.BlindUp('cbr_row_#{rp[:name]}');  document.getElementById('instructor_id').value = '#{rp[:instructor_id]}';return false;", :remote=>true %>

(здесь я добавил разрывы строк, чтобы вы, ребята, не могли так много прокручивать вправо)

Из контроллера:

      def call_back_request_cbrsent
        @call_back_request = CallBackRequest.new(params[:call_back_request])
        @instructor = Instructor.find_by_id(params[:instructor_id])
        @call_back_request.instructor_id = params[:instructor_id]
        @call_back_request.save
        email = UserMailer.create_send_call_back_request(@call_back_request, @instructor)
        email.set_content_type("text/html")
        UserMailer.deliver(email)
      end

Теперь дело в том, насколько мой усталый разум может видеть возвращение ложным;& remote => true (в частности, в теге submit) ничего не делать.Кэш моего мозга полностью забит блок, у меня проблемы с мышлением.Чувствую, что мне нужно сделать шаг назад и все такое, потому что я не вижу здесь проблем.

Спасибо любому, кто приложит усилия, чтобы пройти через мои разговоры здесь, чтобы дать мне ответ, я ценю, что яУ меня там много вафель.Очень жаль.Уставший до смерти.Подумайте, доктор Джонестоун сказал: «Извините, у меня не было времени, чтобы написать короткую» - немного об этом здесь.удаленная форма ... Я пытался добавить это

    render :nothing => true

Но он не работает.

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

1 Ответ

3 голосов
/ 02 апреля 2012

Попробуйте (в вашем контроллере)

render :nothing => true

Edit:

Ах, если бы у вас была ошибка шаблона, вы должны были сказать об этом.

Я только что заметил, что вы тоже хотите удалить div.

Итак, что вы хотите сделать, это в вашем контроллере:

def call_back_request_cbrsent
....
    respond_to do |format|
      format.html
      format.js
    end
end

А затем создайте файл call_back_request_cbrsent.js.erb в ваших представлениях. Это будет содержать JavaScript, чтобы удалить эту форму. Очевидно, он содержит что-то вроде следующего:

$("#form").remove()

... Это в jQuery, но просто используйте любой javascript, который вы использовали для удаления формы.

...