Просмотр не отображается

Я пытаюсь отобразить представление из текущего с помощью jquery. Я использую flexigrid для своего проекта и хочу написать код для кнопки информации.

Вот мой взгляд. Используя jquery, я вызываю следующее:

var name = $('.trSelected .sorted div').html();
$.post("/contacts/display_info/", {file_as : name});

Мой контроллер следующий. Пробовал отладку тоже.

def display_info
        @contact = Contacts.find_by_file_as(params[:file_as])
        puts "---------------"
        puts @contact.id
        puts "---------------"
        render(:action => 'display_info' , :id => @contact.id)
    end

А вот и моя консоль:

введите здесь описание изображения

Немогу понять в чем проблема. Пожалуйста помоги!


person Shub    schedule 07.03.2014    source источник
comment
почему бы вам не использовать redirect_to contact_path(@contact) вместо render(:action => 'contacts' , :id => @contact.id)   -  person rony36    schedule 07.03.2014
comment
@rony36 rony36 Все еще показывает, что «внутренняя ошибка сервера 500».   -  person Shub    schedule 07.03.2014
comment
есть ли представление для contact действия?   -  person rony36    schedule 07.03.2014
comment
@rony36 ой!! Я отредактировал вопрос. Теперь он показывает обработанные «контакты/display_info». я отредактировал вопрос   -  person Shub    schedule 07.03.2014
comment
эээ, в чем проблема? Вы публикуете действие, и в журнале отображается представление для этого отображаемого действия.   -  person sevenseacat    schedule 07.03.2014
comment
@sevenseacat Проблема в том, что он не отображается в браузере.   -  person Shub    schedule 07.03.2014
comment
Мы могли видеть проблему CSRF в вашем журнале. Просто посмотрите, поможет ли какая-либо из этих ссылок. stackoverflow.com/questions/11986939 /, stackoverflow .com/questions/7203304/, stackoverflow.com/questions/14039475/, заголовок stackoverflow.com/questions/21273854/   -  person Rajesh Omanakuttan    schedule 07.03.2014
comment
@RajeshCO он говорит, что это отображается в консоли rails, но это не происходит в ВЕБ-БРАУЗЕРЕ... как-то странно   -  person Standin.Wolf    schedule 07.03.2014


Ответы (3)


Проблема в том, что вы делаете запрос ajax, но ничего с ним не делаете. Вам нужен обратный вызов, который захватит ответ на запрос и каким-то образом обработает его.

Что-то типа:

$.post("/contacts/display_info/", {file_as : name}, function(data) {
  // `data` will be the HTML returned by the server

  // If for example you want to render this HTML on your page, you may want something like: 
  $('#my_fancy_div').html(data);
});

Вы также можете изменить действие вашего контроллера на render layout: false, предполагая, что вы хотите отображать только HTML в представлении, а не окружающий макет приложения.

person sevenseacat    schedule 07.03.2014
comment
Я хочу переместить элемент управления в «/contacts/display_info/name_of_the_contact». Как это сделать. Извините, если мой вопрос неправильный, но можно ли это сделать без ajax?? - person Shub; 07.03.2014
comment
@sevenseacat он говорит, что это отображается в консоли rails, но это не происходит в веб-браузере ... немного странно - person Standin.Wolf; 07.03.2014
comment
@sevenseacat Я получил ответ. это было окно.местоположение.заменить. И я шел в совершенно неправильном направлении. Спасибо за помощь! - person Shub; 07.03.2014

в свой layout добавьте:

<%= csrf_meta_tag %>

и когда вы posting убедитесь, что вы отправляете:

 "authenticity_token": "<%= form_authenticity_token %>"

более конкретно:

$(document).ajaxSend(function(e, xhr, options) {
  var token = $("meta[name='csrf-token']").attr("content");
  xhr.setRequestHeader("X-CSRF-Token", token);
});

Спасибо.

person rony36    schedule 07.03.2014
comment
У меня уже есть ‹%= csrf_meta_tag %› в «голове». Я не могу понять, куда добавить вторую строку. помощь. - person Shub; 07.03.2014
comment
Я упомянул об этом в посте. - person Shub; 07.03.2014
comment
Я получил ответ. это было окно.местоположение.заменить. И я шел в совершенно неправильном направлении. Спасибо за помощь! - person Shub; 07.03.2014

  1. Если вы делаете запрос ajax, желательно, чтобы он был JSON.
  2. Для Json проверьте наличие файла с именем contacts.json.erb в папке контактов.
  3. Вы можете попробовать использовать удаленный истинный, гораздо более чистый и лучший вариант, чем запросы ajax/json.

Проверьте это: http://railscasts.com/episodes/205-unobtrusive-javascript

попробуй поставить контроллер

respond_to do |format|
    format.html
    format.json { render :json=> {:success => true, :id => @contact.id } }
end

Что-то вроде этого.

person Sahil Grover    schedule 07.03.2014
comment
Нет, в этой папке нет ничего json. - person Shub; 07.03.2014
comment
@FredoCorleone, что произойдет, если вы введете веб-адрес, который вы отображаете, в URL-адресе? - person Standin.Wolf; 07.03.2014
comment
@sahil, можешь уточнить? может быть, исправить мой код? Это должно быть через jquery, потому что я использую flexigrid - person Shub; 07.03.2014
comment
Я отредактировал вопрос. Мой поступок был неправильным. Пожалуйста, проверьте это. - person Shub; 07.03.2014
comment
200 ок. С какой еще проблемой вы столкнулись? - person Sahil Grover; 07.03.2014
comment
@SahilGrover он говорит, что это отображается в консоли rails, но это не происходит в ВЕБ-БРАУЗЕРЕ .. немного странно - person Standin.Wolf; 07.03.2014