我在“命题”显示页面上有一个div(id =“content”),我想根据div顶部的哪个选项卡呈现不同的部分。
我正在尝试使用以下link_to使用AJAX呈现部分(dominant_content):
<%= link_to "Connected", :url => {:controller => "propositions",
:action => "substantive_content"}, :remote => true %>
我有两个问题:
点击链接后,发出GET请求
发送给
PropositionsController#show
,和
不是(我推测)到“实质性的
内容“动作。这只是刷新页面而不会远程执行任何操作。不显示正确的部分。
我不知道怎么渲染一个 部分进入“内容”div。
目前我在PropositionsController中有这个:
def substantive_content
respond_to do |format|
format.js{ render :update do |rightbar|
rightbar.replace_html 'content', 'Hello World!'
end}
end
end
......但我不确定从哪里开始。我是否以正确的方式解决这个问题?我对rails,javascript等很新。
任何这些问题的帮助都会很棒。谢谢!
答案 0 :(得分:1)
在routes.rb文件中,您应该有一个entity_content操作的条目。它可能看起来像这样:
match "substantive_content" => "propositions#substantive_content", :as => substantive_content
然后在您的视图中,链接应如下所示:
<%= link_to "Connected", substantive_content_path, :remote => true %>
当js请求进入dominant_content操作时,我会呈现一个js.erb文件。这个动作看起来像这样:
def substantive_content
respond_to do |format|
format.js
end
end
然后在views / propositions目录中创建一个substan_content.js.erb文件。在该文件中,您可以使用jquery更新内容div:
$('#content').html("<%= render :partial => 'your_partial_name_here' %>");
如果不了解您正在使用的实际应用程序,很难说这是否是实现您想要的最佳方式。我通常尽量使用我的应用程序保持“RESTful”,所以我不愿意创建动作不是正常索引,新建,创建,显示等设置的一部分。这并不是说在这种情况下它不是必要的,但它是值得思考的。