簡體   English   中英

Rails:點擊時在div中渲染部分

[英]Rails: Rendering partial in div on click

我正在構建一個Web應用程序,它具有分為兩側的UI,一個菜單欄和一個內容區域。 菜單欄列出了用戶編寫的所有博客的標題。 單擊標題時,內容區域應更改為顯示該博客的帖子。

1.)所以在我的菜單欄上,我有:

<%= link_to blog.title, blog, :remote=>true %>

在我的內容領域,我有:

<div id="contenthere"></div>

2.)因此,根據我的理解,這應該觸發博客控制器的show方法。 在那里,我在方法中有以下內容:

@blog = Blog.find(params[:id])

respond_to do |format|
   format.js { render :show_blog }
end

3.)哪個應該在views / blogs文件夾中查找名為show_blog.js.erb的文件:

$("#contenthere").html("<%=escape_javascript(render :partial=>"show_blog")%>");

這將使我的div與commenthere id一起使用_show_blog.html.erb部分(位於博客視圖文件夾中),其blog參數等於我的博客控制器中設置的@blog參數。

4.)所以我的show blog partial有這段代碼:

<%=@blog.title %>
<%=@blog.user_id %> 

編輯:實際上,我搜索並發現我不能在assets文件夾中使用'render'方法 - 我在哪里放js.erb呢? 我已將其移至博客視圖文件夾,主視圖文件夾(index.html.erb),只是/ view /文件夾...錯誤消失,但鏈接無法正常工作...

編輯:將show_blog.js.erb放在我的views / blogs文件夾中,因為它是調用它的博客控制器。 單擊鏈接時沒有任何事情發生,控制台中沒有顯示JS錯誤。 js被調用了嗎?

編輯:更改以反映我的最終答案。

@blog = Blog.find(params[:id])

respond_to do |format|
   format.js { render :show_blog }
end

那不是Rails的默認邏輯。

你沒有提供,如何調用方法,假設

   def show_blog
    @blog = Blog.find(params[:id])
    respond_to do |format|
       format.js 
    end
    end

然后,Rails將在views/blogs查找show_blog.js.erb並呈現該文件。

此外,您需要將實際實例傳遞給partial,因為patrial是獨立的代碼塊,並且不知道@blog是什么:

$("#contenthere").append("<%=j render :partial=>"show_blog", :locals=>{:@blog=>@blog}%>");

最后非常簡單的解決方案---部分是調用blog.title,blog.user_id,但@blog是傳遞的實際參數。 只需要改為@ blog.title和@ blog.user_id。

暫無
暫無

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

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