Браузер Chrome не может найти частичный
Я использую следующее в своем контроллере для добавления задач в мою модель проекта с помощью ajax.
def task_add
project = Project.find(params[:project])
@task = ProjectTask.new(:description => params[:description])
project.project_tasks << @task
render :partial => 'task'
end
и мой вызов ajax:
$('#task-add').click(function(){
var taskDesc = $('#task-description').val();
$.ajax({
type: "POST",
url: "/project_task_add",
data: ({project:<%= @project.id %>, description:taskDesc}),
success: function(data){
var data = $('<div/>').append(data);
$('#tasks').append($('#new-task', data).html());
}
});
});
Он отлично работает в Firefox, но Chrome дает следующую ошибку:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
Копая глубже в инструментах chrome dev, я нахожу следующий ответ:
<h1>Template is missing</h1>
<p>Missing partial projects/task with {:locale=>[:en, :en], :formats=>[:js, :"*/*"], :handlers=>[:erb, :rjs, :rhtml, :builder, :rxml]} in view paths "/home/user/apps/my_app/app/views", "/usr/lib/ruby/gems/1.8/gems/devise-1.1.5/app/views"</p>
Партия _task.html.erb существует в /views/projects/, и Firefox делает ее просто прекрасной. Я не понимаю, что другое в Chrome... любые идеи?
метод запроса: js.
Я думаю, что рельсы пытаются сделать _task.js.rjs не _task.html.erb.
Вы можете указать It
render :partial => 'projects/task.html.erb'
но я думаю, что вы можете изменить представление из того, какой запрос был сгенерирован, чтобы у них не был метод params js. Или визуализируйте ответ ajax.
опубликуйте свое мнение, если вам нужна дополнительная помощь!
Ожидается, что ваш частичный вызов будет называться app/views/projects/task.js.erb
(как выяснено частью formats
вашей ошибки, а не app/views/projects/task.html.erb
). Вероятно, только частичное определение html
.
Еще в рубрике
- Вопросы
- Ruby-on-rails
- Браузер Chrome не может найти частичный