Подтвердить что ты не робот

Как отредактировать partial.js в рельсах 3

Использование rails3 - У меня есть проект со многими задачами. Я хочу использовать javascript для создания пользовательского интерфейса для каждой задачи. Я решил, что смогу отобразить эти задачи на странице проектов, создав частичный JavaScript для каждого. Я не могу получить "задачи/показ", чтобы увидеть задачи /show.js.erb. Любые идеи?

В проектах /show.html.erb

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

Задачи/show.js.erb

$("tasks").append(new TaskWidget(task.id))

Я получаю ошибки

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

Спасибо

4b9b3361

Ответ 2

Вы можете попробовать это. Вместо частичного Javacript вы можете создать html один _show_js.html.erb и окружить свой JS-код тегом html <script>.

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

и

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

Ответ 3

Try:

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

Ответ 4

Чтобы сделать это, мне нужно было добавить формат:

 <script> 
  <%= render(:partial => 'shared/topmenujs', :formats => [:js] ) %>
  </script>

Ответ 5

Ну, я не знаю, является ли такая же проблема, но я прошел аналогичную вещь с рельсами 3. У меня было, например, частичное представление в app/views/invoices/_select.html.erb, и я смог отобразить в представлении с помощью

<% = render: partial = > "invoices/select" % >

с какой-либо проблемой, и если в контроллере я помещаю

render: partial = > "invoices/select"

Мне удалось открыть действие в браузере, проблема возникает, когда я пытаюсь вызвать действие из вызова ajax, после чего получаю ошибку ActionView::MissingTemplate. Единственный способ, который я решил решить, - переименовать представление в _select.rhtml, и тогда все прекрасно работает.

Ответ 6

Проблема в том, что в Rails 3 рендер из файла .js будет искать файлы только в виде show.js.erb или show.erb

Чтобы обойти это, вам нужно будет либо создать файл _show.js.erb, но так как этот вид побеждает цель частичных, вы можете просто просто переименовать файл show.html.erb в show.erb

Это, вероятно, неверная практика, чтобы сделать стандартное действие контроллера без окончания типа (например, show.erb)

Что бы я сделал, если бы я был вами, переименуйте свое частичное что-то вроде _tasks.erb вместо _show.html.erb, а затем, если вам нужны задачи /show.html.erb, вы можете просто отредактировать части _tasks внутри это представление.