簡體   English   中英

是否可以在沒有link_to的情況下渲染部分onclick?

[英]Is it possible to render partial onclick without link_to?

我想知道是否可以在沒有link_to的情況下渲染部分onclick?

我一直在尋找答案,但大多數答案表明使用link_toblabla_pathremote: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM