目前我正在努力让我的rails应用程序单页,但我在部分渲染方面遇到了一些问题..现在这里是我的控制器代码:
class WelcomeController < ApplicationController
def create
@welcome = WelcomeController.new
render :partial => 'enjoy'
end
def index
if params[:id] == 'enjoy'
@partial_view = 'enjoy'
elsif params[:id] == 'about'
@partial_view = 'about'
else
@partial_view = 'main'
end
end
end
所以这个控制器链接到我的视图,并且对于要更改的页面我正在使用索引操作中的代码,但现在我正在尝试使用create动作中的东西。我试图调用create动作的index.html.slim的代码是:
div id="content"
= form_tag(:url => {:action => 'create'},
:update => "content", :position => :bottom,
:html => {:id => 'subject_form'},
:remote => true)
= submit_tag 'Add'
所以在按钮上单击“添加”,我期待来自_enjoy.slim.html的内容,这是我的部分进入id为“内容”的div,但是当点击按钮和_enjoy.html时。苗条被渲染它在整个index.html.slim页面上加载...所以我被困在那,我怎么能让它加载到某个div?
非常感谢任何对此问题有答案的人{:
答案 0 :(得分:3)
您必须在“欢迎”视图目录中添加create.js.erb
文件,并且必须按照ajax渲染部分文件:
$("#content").html("<%= j render(:partial => 'welcome/enjoy') %>");
并且在控制器的创建操作中,您必须响应javascript:
def create
...
respond_to do |format|
format.js
end
end
答案 1 :(得分:3)
控制器:
class WelcomeController < ApplicationController
def create
@welcome = WelcomeController.new
# Remove the render
end
def index
# No change
end
end
查看:
div id="content"
= form_tag({:action => 'create'}, :id => 'subject_form', :remote => true) do
= submit_tag 'Add'
创建welcome / create.js.erb并向其添加以下行:
$('#content').html("<%= j render(:partial => 'welcome/enjoy') %>")