Если вы отредактировали файл edit.html.erb, когда значение @ account.name равно «George», HTML-код останется прежним (со значением «George»), пока вы не обновите его. Ваш вызов link_to_function при загрузке страницы отображает ссылку html, которая вызывает javascript, который заменяет внутренний html div «test_id» на «George». Если вы не замените этот HTML-код, он всегда будет заменять внутренний HTML-код этого элемента «Джордж».
Трудно рекомендовать решение, не зная точно, что вы хотели бы сделать ...
обновлено, чтобы иметь больше деталей:
Если вы делаете вызов AJAX, который изменяет значение имени учетной записи на сервере на «Fred», и хотите, чтобы это изменение появилось на странице, вам следует обновить части страницы, которые используют это значение в этом тот же AJAX-вызов (то же действие контроллера).
Ваша функция link_to_ генерирует HTML следующим образом (если @ account.name был 'George', когда страница отображалась):
<a onclick="try { Element.update("test_id", "George"); ... >Make test</a>
Это не вызов ajax, это просто ссылка, выполняющая javascript. Если вы хотите сделать это вызовом ajax, который находит значение latest имени учетной записи и обновляет div test_id, выполните что-то вроде этого:
<%# you need prototype included, but it should probably be in application.rhtml %>
<%= javascript_include_tag "prototype.js" %>
<div id="test_id">
<%= @account.name.to_s %>
</div>
<%= link_to_remote "Make test", :url => { :controller => "account", :action => "change_name" } %>
Ссылка «Создать тест» теперь будет выполнять AJAX-вызов метода «имя-изменения» в контроллере «учетной записи». Этот метод будет выглядеть примерно так:
def change_name
# here you would load the account from the db; I'm cheating
@account = Account.new(:name => "Fred")
render :update do |page|
page.replace_html :test_id, :text => @account.name.to_s
end
end