#jquery #ruby-on-rails-3 #layout
#jquery #ruby-on-rails-3 #макет
Вопрос:
Мой вызов Ajax почти работает, но я не могу понять, почему мой макет все еще отображается? вот контекст:
На моем сайте есть страница контактов, использующая API LinkedIn. Я хочу загрузить информацию LinkedIn из вызова ajax при загрузке моей страницы. Это работает нормально.
Но результат my .load() отображается с макетом моего сайта. Я только хочу отобразить html в моем ajax_contact.html.erb..
contact.js
$(document).ready(function() {
$(".info_perso").load( '/contact/ajax_contact', {name:"benoit"}, function(data){ $(".info_perso").html( data );})
});
ajax_contact.html.erb:
<%if !@profile.nil?%>
<%=image_tag(@profile.picture_url)%><br />
<%=@profile.first_name %> <%=@profile.last_name %><br>
<%=@profile.headline%><br>
<%=@profile.industry%><br> <br />
<%=@profile.summary%><br>
<label class="linkedin_title">Education</label><br>
<% @profile.educations.all.each {|edu| %>
Degre : <%=edu.degree%><br>
Années : <%=edu.start_date.year%> - <%=edu.end_date.year%><br>
Concentration : <%=edu.field_of_study%><br>
Universite : <%=edu.school_name%><br>
<%}%>
<label class="linkedin_title">Experience</label><br>
<% @profile.positions.all.each {|pos| %>
<label class="linkedin_subtitle"> Company:</label> <%=pos.company.name%><br><br>
<label class="linkedin_subtitle">Titre :</label> <%=pos.title%><br>
<label class="linkedin_subtitle">Années :</label> <%=pos.start_date.month%>/<%=pos.start_date.year%> - <%= pos.end_date? ? pos.end_date.month.to_s "/" pos.end_date.year.to_s : "now"%><br>
<label class="linkedin_subtitle">Description :</label> <%=pos.summary%><br/><br/>
<%}%>
<%else%>
<%=link_to "Activer linkedIn", :controller=>"linkedinAuth", :action=>"benoit", :name=>"benoit", :callback=>"/linkedinauth/callbackbenoit"%>
<%end%>
contact_controller.rb:
def ajax_contact
name = params[:name]
linkedinInfo = LinkedinApiInfo.find(1)
linkedinCred = LinkedinCredential.find_by_name(name)
if !linkedinCred.nil?
client = LinkedIn::Client.new(linkedinInfo.apiKey, linkedinInfo.secretKey)
client.authorize_from_access(linkedinCred.acctoken, linkedinCred.accsecret)
# Pick some fields
fields = ['first-name', 'last-name', 'headline', 'industry', 'num-connections','educations', 'num-recommenders','recommendations-received', 'summary', 'positions','picture-url']
@profile = client.profile :fields => fields
@profile.recommendations_received.all.each {|rec| puts rec.recommendation_text}
puts @profile
end
rescue SocketError
puts "Unable to connect"
render "ajax_content", :content_type=>"text/html", :layout=>false
end
Даже с :layout=>false мой макет все еще отображается!!! кто-нибудь может увидеть проблему?
Ответ №1:
Добавить
визуализация ‘ajax_contact’, :layout=>false
для вашего действия, в конце, также имя частичного представления должно начинаться с _ , поэтому ваше представление должно быть названо «_ajax_contact»
Комментарии:
1. затем переименуйте свое представление в ‘_ajax_contact’, чтобы rails знал, что это частичное представление
2. вы также изменили свой метод рендеринга? вам нужно только изменить имя файла.
3. На самом деле, я перепробовал все. _ajax_contact.html.erb с отображением ‘ajax_contact’, :layout=>false. затем отобразите ‘_ajax_context’, :layout=>false . затем визуализируйте: partial=>’ajax_context’, :layout=>false … Я не понимаю … хуже всего, что я уже делал это с другим проектом, и все, что мне нужно было, это поместить render:layout=>false в мой контроллер!!
4. боже… всегда глупая ошибка, лол.. мой render:layout=> false был в конце метода … после моей ошибки rescue SocketError …. так что это никогда не вызывалось! должен был отладить это раньше, спасибо за ваше время. Я приму ваш ответ в качестве благодарности 😉