2015-07-17 3 views
0

Я изучаю jquery и понимаю, как связать файлы js.erb с действиями контроллера и заставить их работать.Rails jquery newbie

Я не могу определить, как получить кнопку, которая не связана с действием контроллера для выполнения некоторых команд jquery.

У меня есть следующий вид:

<%= form_for([commentable, Comment.new], remote: true, html: { class: "comment-form", id: "comment-form-#{commentable.id}" }) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
    <%= f.text_area :content, placeholder: "Add a comment...", rows: 3, minlength: 10, maxlength: 1000 %> 
    <button class="btn btn-success" type="submit">Post comment</button> 
    <button class="btn btn-default" type="button">Cancel</button> 
<% end %> 

Эта форма отображается с помощью JQuery. Я бы хотел, чтобы кнопка «Отмена» просто удаляла форму.

Я создал файл, называемый activity.js, и в нем у меня, однако, нет ответа от кнопки.

$(this).click(function() { 
    alert('Hooray!'); 
}); 
+2

Я настоятельно рекомендую сначала несколько учебников по jquery, иначе вы можете быстро запутаться: http://www.w3schools.com/jquery/ – BroiSatse

+0

Что такое 'this' в вашем коде? можете ли вы разместить более крупный фрагмент? – adamliesko

ответ

1

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

HTML:

<button id="cancel_comment" class="btn btn-default" type="button">Cancel</button> 

JS:

//Handling click in button 
$(document).ready(function() { 
    $("#cancel_comment").click(function() { 
     $(this).parents('form').remove(); //removing the parent form 
    }); 
}); 

Убедитесь, что вы используете $(document).ready().

+0

Это похоже на то, что я пытался ранее, однако я не думаю, что мой файл activity.js загружается правильно, так как даже с правильным кодом от кнопки появляется нулевой ответ. (Да, я обновил идентификатор кнопки до «cancel_comment») – Dercni

+0

Не уверен, что это помогает, но когда я нажимаю, чтобы добавить, чтобы форма появилась, я могу отправить и т. Д., И все работает правильно, однако, когда я просматриваю источник страницы, в списке ...? – Dercni

+0

Ваша форма добавлена ​​динамически с помощью javascript ?? –

2

Я хотел бы «Отмена», чтобы просто удалить форму.

Вы можете сделать это с помощью .closest() и .remove()

$(".btn-default").on("click", function() { 

    $(this).closest("form").remove(); 
}); 
Смежные вопросы