[英]Is it possible to render partial onclick without link_to?
我想知道是否可以在沒有link_to的情況下渲染部分onclick?
我一直在尋找答案,但大多數答案表明使用link_to
和blabla_path
與remote: true
但我不想通過控制器來處理它,而只是視圖側。
就像是
<%= if button.click? render "form" %>
<%= 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 %>
如果您真的想在單擊鏈接或按鈕時動態獲取視圖,則必須通過控制器進行查看。 根據MVC規則。 但在你的情況下,你可以嘗試像加載頁面渲染部分並使其隱藏。 並點擊一個按鈕或鏈接只需通過jQuery或javascript 刪除其隱藏的屬性 。
簡單
Sabyashachi Ghosh
關於將元素隱藏在DOM中,因此您可以在點擊時取消隱藏它們。 雖然效率極低,但它可以達到你想要的效果
動態
您必須使用Ajax和控制器操作來處理請求
從Rails動態加載內容的唯一方法是發送請求。 Rails就像一個巨大的API - 你必須將你的請求發送到一系列端點 (路由),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
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.