如何在rails 3中渲染partial.js

Jul*_*ann 19 javascript ruby-on-rails partial ruby-on-rails-3

使用rails3 - 我有一个包含许多任务的项目.我想使用javascript为每个任务构建UI.我想我可以在项目展示页面上显示这些任务,方法是为每个任务渲染一个javascript.我无法获得'tasks/show'来查看任务/ show.js.erb任何想法?

在projects/show.html.erb中

<div id="tasks">
<%= render(:partial => "tasks/show", :collection => @project.tasks) %> 
</div>
Run Code Online (Sandbox Code Playgroud)

任务/ show.js.erb

$("tasks").append(new TaskWidget(task.id))
Run Code Online (Sandbox Code Playgroud)

我得到了错误

ActionView::MissingTemplate in Projects#show 

Missing partial tasks/show with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths .... around line #13
Run Code Online (Sandbox Code Playgroud)

谢谢

wom*_*ton 28

它不应该在文件中_show.js.erb吗?

"使用部分".


cor*_*tex 10

你可以试试这个.而不是有一个Javacript部分,你可以制作一个HTML,_show_js.html.erb并用html <script>标记包围你的JS代码.

<script type='text/javascript'>
$("tasks").append(new TaskWidget(task.id))
</script>
Run Code Online (Sandbox Code Playgroud)

和,

<div id="tasks">
<%= render(:partial => "tasks/show_js", :collection => @project.tasks) %> 
</div>
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试:

render:partial =>"tasks/show.js"


hta*_*oya 5

为了使其工作,我需要添加格式:

 <script> 
  <%= render(:partial => 'shared/topmenujs', :formats => [:js] ) %>
  </script>
Run Code Online (Sandbox Code Playgroud)