![](/img/trans.png)
[英]How to render partial view of one controller to another controller in ruby on 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
贊成部分
app/views/posts/_downvote.html.erb
帖子部分
app/views/posts/_post.html.erb
反對票控制器
點贊控制器
控制器中的第 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.