Вы, кажется, путаете вещи.
У вас есть html внутри вашего метода контроллера?Это должно быть на ваш взгляд.Для каждого метода контроллера обычно отображается представление с тем же именем, кроме случаев, когда вы явно вызываете render
из вашего метода контроллера.
Вы не пишете html в своем контроллере.Вы пишете HTML в представлении, и иногда у вас есть помощники, чтобы сделать ваши представления более читабельными.
Во-вторых, в вашем первом фрагменте кода, который, я надеюсь, представляет собой некоторый код представления.Представление подготавливается на стороне сервера, а затем отправляется клиенту.Вы можете визуализировать другой вид, частичный, из вида.Но это не загружает данные в реальном времени.
Как бы я это исправить.Внутри ваших представлений, где вы хотите динамически визуализировать проверку:
<script>
$("#validate_company").live("keyup", function() {
$("#company_info").load("<%= url_for :controller => 'live_validations', :action => 'validate_client_company' %>");
});
</script>
Затем внутри вашего контроллера вы пишете:
class LiveValidationsController < ApplicationController
def validate_client_company
if params[:first_name].length > 0
@client = Client.find_by_company(params[:company])
@error = @client.nil? ? :valid_username : :invalid_username
else
@error = nil
end
render :partial => "message", :layout => false
end
end
Внутри app/helper/live_validations_helper.rb
вы добавляете метод
def get_validation_message(error)
if error == :invalid_username
image_tag('/images/cancel_48.png', :alt => 'Invalid Username') + "Name taken"
elsif error == :valid_username
image_tag('/images/accepted_48.png', :alt => 'Valid Username')
end
end
и внутри вашего message
представления вы пишете что-то вроде:
<%= get_validation_message(@error) %>