Проблема в том, что Play!генерирует URL, когда файл обслуживается, задолго до того, как какой-либо javascript будет выполнен.Никаких изменений в строке или кавычках здесь или там вам не помогут.
Обходной путь:
var url = "@{Animal.index(XXX)}".replace('XXX', data[i].name);
${'#tableBody').append('<a href="'+url+'">' + data[i].name + '</a>');
Это позволяет играть!генерировать его URL во время «компиляции», а затем javascript просто выполняет замену во время «выполнения».Не уверен, если играть!будет искать переменную с именем XXX, если это так, добавьте тупую переменную с именем XXX со значением "XXX" на стороне сервера.
UPDATE
Неесть игра!экземпляр передо мной, чтобы возиться, но вместо переменной вы, вероятно, могли бы также вставить строку непосредственно как значение, заключив в кавычки XXX:
var url = '@{Animal.index("XXX")}'.replace('XXX', data[i].name);
И тогда вам не понадобится переменная с именемXXX.Детали требуют некоторой проработки, хотя идея та же самая.