2014-04-15 7 views
3

Мне было интересно, можно ли сделать частичный onclick без link_to?Можно ли сделать частичный onclick без link_to?

Я искал ответы, но большинство ответов утверждают, что с помощью link_to и blabla_path с remote: true, но я не хочу, чтобы справиться с этим с помощью контроллера, а не только виды сбоку.

Что-то вроде

< <%= if button.click? render "form" %> - (это, очевидно, не будет работать, но что-то вроде этого)

Благодаря

Кстати, я использую Rails 4.0.1

====

Обновление

Я пробовал его динамически, используя ajax и jquery, это работает, но это странно. См. Ниже мой код, я поместил ссылку внутри цикла, но когда щелкнул «Новый комментарий», он появляется в первом сообщении, когда я щелкнул «Новый комментарий» на втором/третьем/четвертом частицы получили визуализацию на первом посту. Что происходит? Когда я нажимаю «Новый комментарий» на втором посту, он должен появиться на втором посту вместо первого.

<% @posts.each do |post| %> 

    <%= post.title %> 

    <%= post.content %> 

    <%= link_to 'New Comment', new_comment_path, id: 'new_comment', remote: true %> 

<% end %> 
+0

можно сделать с помощью ' submit_tag' & using 'javascript (с ajax)'. Но без действия контроллера это невозможно. – Pavan

ответ

2

Если вы действительно хотите получить представление динамически при нажатии на ссылку или кнопку, вам необходимо пройти через контроллер. AS за правило MVC. Но в вашем случае вы можете попробовать что-то вроде при загрузке страницы, сделать частичную и сделать ее скрытой. и при нажатии на кнопку или ссылку только удалить скрытое свойство через jQuery или javascript.

+0

Спасибо за предложения. – laman

+0

@laman, пожалуйста, отметьте его, если он решает вашу проблему. –

+0

Спасибо за ответ, я пробовал использовать ajax и jquery, динамический путь, что-то подключенное, я задавался вопросом, можете ли вы проверить обновленный вопрос? cheers – laman

1

Простой

Sabyashachi Ghosh пятно на о сохранении элементов скрыты в DOM, так что вы можете отобразить их по щелчку. Хотя крайне неэффективно, это будет достичь именно то, что вы хотите


Dynamic

Вы должны будете использовать Ajax & действие контроллера для обработки запроса

Единственный способ для динамической загрузки что-то из Rails должно отправить запрос. Rails похож на гигантский API - вы должны отправить свои запросы в серию endpoints (маршруты), которые Rails затем обрабатывает с помощью контроллера

Ваша проблема в том, что вы сможете загружать что-то динамически, если у вас есть необходимые маршруты на месте, чтобы отправить запрос через к конкретным действиям контроллера, который будет обрабатывать запрос & позволить Rails, чтобы сделать результат

Я бы сделать это:

#app/controllers/application_controller.rb 
Class ApplicationController < ActionController::Base 
    layout Proc.new {|controller| controller.request.xhr? false : "application" } #-> sets layout to false for ajax requests 
end 

#view 
<%= link_to "Load Popup", action_path, remote: :true %> 

#javascript 
$("a[data-remote=true]").on("ajax:success", function(data) { 
    //handle data 
}); 
+0

Ваше предложение хорошее и правильное, но он не хотите взаимодействовать с сервером. –

+0

Он должен использовать статический HTML, тогда –

+0

да, что имеет смысл –

Смежные вопросы