使用 rjs 进行 link_to_remote 的混淆

发布于 2024-10-10 01:56:01 字数 892 浏览 8 评论 0原文

我的应用程序布局包含一个导航 div 和一个构建为部分的内容 div。我想使用 ajax,以便每当用户单击导航 div 中的链接时,该页面的内容就会在内容 div 中呈现,而无需刷新。我对如何正确执行此操作感到困惑...对 Rails 菜鸟有什么帮助吗???先谢谢了~

application.html.erb

<body>
  <div id="container">
    <%= render 'layouts/header' %>
    <%= render 'layouts/content'%>
    <%= render 'layouts/footer' %>
  </div>
</body>

_header.html.erb

<%= link_to_remote "Home", :url => { :controller => "pages", :action => "home" } %>

_content.html.erb

<div id="content">
  <%= yield %>
</div>

Pages_controller.rb

def home
  @title = "Home"
  respond_to do |format|
    format.js
  end
end

home.rjs

page.replace_html :container, :partial => 'layouts/content'

My application layout contains a navigation div, and a content div constructed as a partial. I want to use ajax so that whenever a person clicks on a link in the navigation div, the contents of that page renders in the content div without a refresh. I'm confused on how to properly do this... any help for a rails noob??? thanks in advance~

application.html.erb

<body>
  <div id="container">
    <%= render 'layouts/header' %>
    <%= render 'layouts/content'%>
    <%= render 'layouts/footer' %>
  </div>
</body>

_header.html.erb

<%= link_to_remote "Home", :url => { :controller => "pages", :action => "home" } %>

_content.html.erb

<div id="content">
  <%= yield %>
</div>

pages_controller.rb

def home
  @title = "Home"
  respond_to do |format|
    format.js
  end
end

home.rjs

page.replace_html :container, :partial => 'layouts/content'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风吹雪碎 2024-10-17 01:56:01

尝试将“home.rjs”重命名为“home.js.rjs”。其他一切看起来都是正确的。你遇到什么错误?

Try renaming 'home.rjs' to 'home.js.rjs'. Everything else looks correct. What error are you getting?

千寻… 2024-10-17 01:56:01

尝试:

pages_controller.rb

def home
  @title = "Home"
  respond_to do |format|
    format.js {
      render(:update) do |page|
        page.replace 'content', :partial => 'layouts/content'      
      end
    }
  end
end 

您不需要额外的 rjs 文件。另外仅供参考,如果您将@title保存到数据库,那么您需要在respond_to之前执行@title.reload以获取最新数据。上面关于萤火虫的评论很有帮助。

Try:

pages_controller.rb

def home
  @title = "Home"
  respond_to do |format|
    format.js {
      render(:update) do |page|
        page.replace 'content', :partial => 'layouts/content'      
      end
    }
  end
end 

You don't need extra rjs file. Also FYI, if you are saving @title to the DB, then you need to do @title.reload before respond_to to get latest data. The comment above about firebug is helpful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文