Я использую рельсы 2.3.11.У меня есть вещь text_field_with_autocomplete, используемая в форме блога модели
<% remote_form_for :blog, :url => {:controller => "blogs", :action =>"add_blog"} do |f|%>
<%= f.text_field :title, :class => "admtxt1 wd1 lfloat" %>
<%= text_field_with_auto_complete "user_login", :login, { :size => 15}, { :url => {:controller => 'users', :action => 'autocomplete_for_blogowners'}, :method => :get, :param_name => 'term', :indicator => "spinner"} %>
<%= submit_tag "Save", :class => "btn-small margintop10" %>
<%end%>
В блоге _controller, действие add_blog у меня есть
def add_blog
unless params[:blog].nil?
@blog = Blog.new(params[:blog])
@user = User.find_by_login(params["user_login"][:login])
@blog.owner = @user
end
respond_to do |format|
if @blog.save
@saved = true
format.js { render :action => 'add_blog' }
else
@saved = nil
format.js { render :action => 'add_blog' }
end
end
end
В моем файле add_blog.js.rjs
if @saved.nil?
page.replace_html 'message','<div id="msg" class = "textcolor3">' + @blog.errors.full_messages.join('<br />') + '</div>'
else
page.replace_html 'message','<div id="msg" class = "h3txt textcolor3"> Blog created successfully </div>'
end
У моего блога есть идентификатор, заголовок, owner_id
И моя модель имеет валидирование validates_presence_of: owner_id,: title
Приведенный выше код прекрасно работает, при этом валидация владельца не должна быть пустой
Но он не проверяет не того пользователя
Например,если я что-то печатаю там, где такого пользователя не существует. В этом случае, если я отправляю форму без результатов, найденных в поле, даже в тот раз, когда я получаю владельца, не должно быть пустым.
Как проверить существование Пользователя в этом случае и добавить это в сообщения об ошибках.