Путаница с использованием RJS для link_to_remote
Макет моего приложения содержит навигационный блок и контентный блок, созданный как частичный элемент. Я хочу использовать ajax, чтобы каждый раз, когда человек нажимал на ссылку в навигационном элементе, содержимое этой страницы отображалось в элементе содержимого без обновления. Я запутался в том, как правильно сделать это... любая помощь для рельса нуб??? заранее спасибо ~
application.html.erb
<body>
<div id="container">
<%= render 'layouts/header' %>
<%= render 'layouts/content'%>
<%= render 'layouts/footer' %>
</div>
</body>
_header.html.erb
<%= link_to_remote "Home", :url => { :controller => "pages", :action => "home" } %>
_content.html.erb
<div id="content">
<%= yield %>
</div>
pages_controller.rb
def home
@title = "Home"
respond_to do |format|
format.js
end
end
home.rjs
page.replace_html :container, :partial => 'layouts/content'
2 ответа
Попробуйте переименовать "home.rjs" в "home.js.rjs". Все остальное выглядит правильно. Какую ошибку вы получаете?
Пытаться:
pages_controller.rb
def home
@title = "Home"
respond_to do |format|
format.js {
render(:update) do |page|
page.replace 'content', :partial => 'layouts/content'
end
}
end
end
Вам не нужен дополнительный файл RJS. Также, к вашему сведению, если вы сохраняете @title в БД, то вам нужно сделать @title.reload перед response_to, чтобы получить последние данные. Комментарий выше о firebug полезен.