簡體   English   中英

Rails:如何從另一個控制器呈現部分視圖

[英]Rails: How to render partial view from another controller

我正在制作一個 reddit 克隆。 現在我有一個有效的投票系統,但每次用戶投票時它都會刷新頁面。 我想通過使用 AJAX 使這個異步。

讓按鈕響應 Jquery 真的很難,因為它們會根據用戶對帖子的投票方式改變狀態。 我想出的解決方案是:在 _upvote 部分中有 2 個 upvote 按鈕,在 _downvote 部分中有 2 個 downvote 按鈕。 每個部分都將有一個投票按鈕,當案例已經為真時會激活該按鈕,再次單擊它會破壞它(例如,如果帖子已經被點贊,則再次單擊點贊按鈕將破壞它)。 如果尚未使用該按鈕(在這種情況下單擊該按鈕將創建它),則部分中的其他按鈕將被激活。

示例:****_upvote 部分中應包含以下按鈕:****

1)create_upvote

2)destroy_upvote

****downvote 部分應包含以下按鈕:****

1)create_downvote

2)destroy_downvote

激活哪個按鈕取決於控制器。

我的問題是這樣的:

1)從另一個控制器渲染局部視圖的實際語法是什么? 例如:posts 正在渲染 _post,在其中我希望 _upvote 或 _downvote 被渲染。 如何從控制器渲染 _upvote 或 _downvote。 同樣,我想從控制器渲染這些部分的原因是因為控制器將改變它們的狀態。

反對部分

app/views/posts/_downvote.html.erb

_downvotes 部分

贊成部分

app/views/posts/_downvote.html.erb

_upvotes 部分

帖子部分

app/views/posts/_post.html.erb

_post 部分

反對票控制器

反對票控制器

點贊控制器

點贊控制器

控制器中的第 9 行是我的語法關閉的地方! 在 _posts 部分中呈現 _upvote 和 _downvote 部分的語法是什么? 謝謝小伙伴們!

就語法而言,您想要的是以下內容:

render partial: "posts/upvote"

不是將 html 數據(您提到的按鈕)從控制器發送到部分,您應該在每個部分中都有一個條件語句來激活一個或另一個按鈕。 從那里為每個相應的按鈕創建事件處理程序。 這就解決了 Jquery 處理內部狀態的問題。

對於views/layouts/_upvote.html.erb內的特殊部分的特殊演員views/layouts/_upvote.html.erb ,您應該使用

render partial: "layouts/upvote"

(不是application/upvote

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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