Ошибка рендеринга частичного Ajax с link_to, указывающим действие контроллера - PullRequest
1 голос
/ 15 июня 2011

У меня есть div (id = "content") на странице показа "предложений", в которую я хочу отобразить различные партиалы в зависимости от того, какая вкладка в верхней части div выбрана.

I 'm пытается отрисовать частичное (вещество-содержание) с помощью AJAX, используя следующую ссылку:

<%= link_to "Connected", :url => {:controller => "propositions", 
                           :action => "substantive_content"}, :remote => true %>

У меня две проблемы:

  1. При нажатии на ссылку запрос GET отправляется на PropositionsController#show, а не (я полагаю) на действие "основное содержание".Это просто обновляет страницу и ничего не делает удаленно.Правильная часть не отображается.

  2. Я не уверен, как тогда преобразовать частичку в раздел "content".

На данный момент у меня есть это в PropositionsController:

  def substantive_content
     respond_to do |format|
         format.js{ render :update do |rightbar|
                 rightbar.replace_html 'content', 'Hello World!'
         end}
     end
  end

... но я не уверен, куда идти отсюда.Я даже иду об этом в правильном направлении?Я очень новичок в rails, javascript и т. Д.

Любая помощь по любой из этих проблем будет фантастической.Спасибо!

1 Ответ

1 голос
/ 15 июня 2011

В вашем файле rout.rb у вас должна быть запись для действия вещества.Это может выглядеть примерно так:

match "substantive_content" => "propositions#substantive_content", :as => substantive_content

Тогда, по вашему мнению, ссылка должна выглядеть примерно так:

<%= link_to "Connected", substantive_content_path, :remote => true %>

Я бы отобразил файл js.erb, когда приходит запрос jsна предметное_действие.Действие будет выглядеть примерно так:

def substantive_content
  respond_to do |format|               
    format.js
  end        
end 

Затем создайте файл essentialtive_content.js.erb в вашем каталоге views /уждений.В этом файле вы можете использовать jquery для обновления содержимого div:

$('#content').html("<%= render :partial => 'your_partial_name_here' %>");

Не зная больше о реальном приложении, над которым вы работаете, трудно сказать, является ли это лучшим способом достичь того, чего вы хотите,Как правило, я стараюсь оставаться «RESTful» в своих приложениях настолько, насколько это возможно, поэтому я не хочу создавать действия, не являющиеся частью обычного индекса, нового, создания, показа и т. Д.Это не значит, что в данном случае это не нужно, но есть над чем подумать.

...