我正在尝试制作两列布局。左侧的列是导航,右侧的列是内容。
当选择相应的导航时,是否可以在右侧div中的不同时间显示show.html.erb
,edit.html.erb
和new.html.erb
,而无需重新加载整个页面?
我知道我可以使用左侧div的部分,并渲染新页面,但我想避免为每个视图单独加载页面。
项目控制器:
def index
@item = item.find(:all, :order => "id DESC")
end
def new
@item = item.new
end
def create
@item = item.new(params[:item])
if @item.save
redirect_to root_path
else
render "new"
end
end
def edit
@item = item.find(params[:id])
end
def update
@item = item.find(params[:id])
if @item.update_attributes(params[:item])
redirect_to root_path
else
render "index"
end
end
HTML:
<div id="left" ">
<p id=link_to "Current_Item", item_path %></p>
<p id=Link_to "Add_Item", new_item_path %></p>
<p id=Link_to "Edit_Item", edit_item_path %></p>
</div>
<div id="right">
</div>
路线档案:
resources :items
答案 0 :(得分:1)
“但我试图避免单独加载页面”表示您想通过ajax而不是完整的新页面加载视图?如果是,则您的链接应为remote_link
,您的观看次数应使用相应视图的内容更新div id='right'
。
您的链接应使用:remote=>true
选项。 See the details
您的观点应该响应更新<div id="right">
中的内容。
Another link here有更多见解。
答案 1 :(得分:0)
我建议修改app/views/layouts/application.html.erb
,然后输入
<div id="left">
<p><%= link_to "Current_Item", item_path %></p>
<p><%= Link_to "Add_Item", new_item_path %></p>
<p><%= Link_to "Edit_Item", edit_item_path %></p>
</div>
<div id="right">
<%= yield %>
</div>
进入它。然后,应为每个适当的操作自动呈现show.html.erb, edit.html.erb, and new.html.erb
视图,这些操作将被调用到页面的右侧部分。
另外,我建议使用Rails tutorial这是一个很棒的rails教程。然后转到Codeschool了解更多信息。