我正在尝试刷新部分导轨中的div并且出现错误。
我设置了一个测试页面,以保持一切简单并帮助排除故障。
这是一个Rails 5项目。
我的testzzz.html.erb是
<%= javascript_tag do %>
$(document).ready(function(){
$("button").click(function(){
$("#div1").load("/forms/test_partial");
alert("here");
});
});
<% end %>
<h3>This is a test of whatever</h3>
<button>Get External Content</button>
<hr>
<div id="div1">
Hi there
<%= render "test_partial" %>
</div>
这导致以下结果(格式化当然不显示)
This is a test of whatever
Get External Content
Hi there
This is a test This is Rails Partial
The current time is 2018-03-01 15:15:02 -0500
Random number 30
这似乎表明我可以渲染test_partial。
我的部分,_test_partial.html.erb是
<h1>This is a test This is Rails Partial</h1>
The current time is <%= Time.now %> <br>
Random number <%= rand(10...42) %>
<hr>
我的想法是,如果实际上是刷新,那么当前时间和随机数将会改变。
我的路线中没有任何部分
我的表单控制器已
def test_partial
render "/forms/_test_partial",
layout: false
end
show def就是
def show
end
然而,基于我尝试的其他事情,我不认为这是问题,但我可能是错的。
如果我查看终端,当我点击按钮
时会看到以下内容Started GET "/forms/test_partial" for 127.0.0.1 at 2018-03-01 14:54:53 -0500
Processing by FormsController#show as HTML
Parameters: {"id"=>"test_partial"}
User Load (1.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 4], ["LIMIT", 1]]
No template found for FormsController#show, rendering head :no_content
Completed 204 No Content in 28ms (ActiveRecord: 1.1ms)
我已经尝试了很多/ forms / test_partial,test_partial,forms / test_partial等的变体,但似乎我无法正常工作。
答案 0 :(得分:0)
当你点击按钮时,js期望有一个名为/forms/test_partial
的实际URL - 如果你想在Rails中使用它,那么你需要设置一个路径来为你渲染那部分。< / p>
我假设您要为forms#test_partial
然后在您的控制器中,您需要记住您已经处于forms
的上下文中,因此您无需在此处的渲染中传递/forms/test_partial
...控制器与模板内的渲染不同。
一个简单的选择是:
def test_partial
render :test_partial, layout: false
end
加上顶级错误文件/forms/test_partial.html.erb
,其中只包含您想要的部分,例如:
<%= render :test_partial %>
(记住你已经在forms
的上下文中,所以不需要指定完整的部分路径。但是如果这是在多个控制器之间共享的话,那么你可能需要明确)