按住按钮后,在单页面应用程序中呈现Rails部分

时间:2014-02-19 01:57:14

标签: ruby-on-rails

如何在单击按钮后在单页应用程序中渲染部分轨道(假设至少有两个控制器在播放)?

不管我读了多少材料,我都不清楚:

  • 我需要多少个控制器
  • 我需要多少次观看
  • 我需要多少动作
  • 我将资源分配到哪个操作?

这正是我想要做的事情:

我希望用户访问我的应用程序的索引页面。在该页面,他们应该能够点击按钮“获取派对活动结果”。返回给他们的结果应来自数据库。这个按钮点击请求应该是AJAX。

据我所知,这意味着

  • 我需要两个控制器:1)StaticPagesController和2)PartyEventsController。这意味着我应该参加派对活动app / views / layouts / _part_events_results.html.erb。
  • 我应该有一个app / views / static_pages / index.html.erb视图。
  • 这意味着我需要在assets / javascript路径之外的某个地方使用js.erb文件。

目前我有:

应用/控制器/ static_pages_controller.rb

def index
end

应用/控制器/ party_events_controller.erb

def food_event
end

应用/视图/ static_pages / index.html.erb

<%= button_to "get events", 'layouts/party_events/', remote: true %>

我设置了'remote:true',因为这表明该链接将通过AJAX提交。

应用/视图/ static_pages / _party_events.html.erb

  <% food_events.each do |event| %>
    <li><%= event.text %></li>
    <li><%= event.location %></li>
    ---------------------
  <% end %>

其他信息,如果有帮助:

  • Rails 4.0.0
  • 最终会有很多类型的事件,例如“食物”,“音乐”。我是否需要为每个人查看部分内容?
  • 只要是单页应用程序,就可以使用任何设计解决方案。我知道如何在PHP / JS中实现这一点,但我很难理解如何使用MVC。

1 个答案:

答案 0 :(得分:1)

在静态页面中,您应该有一个可用于替换或修改ajax的DOM元素。

在你的button_to中,你应该指定你想要的控制器和动作

在party_event_controller#action中,您可以使用js进行响应并让它呈现一个模板,#action.js.erb将执行DOM操作以替换或更新页面。

提出类似问题:Rails - updating div w/ Ajax and :remote => true

使用无障碍javascript显示ajax crud的教程:http://stjhimy.com/posts/07-creating-a-100-ajax-crud-using-rails-3-and-unobtrusive-javascript