获取没有找到FormsController的模板#show,渲染头:no_content尝试刷新div时使用partial

时间:2018-03-01 20:27:11

标签: jquery ruby-on-rails

我正在尝试刷新部分导轨中的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等的变体,但似乎我无法正常工作。

1 个答案:

答案 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的上下文中,所以不需要指定完整的部分路径。但是如果这是在多个控制器之间共享的话,那么你可能需要明确)