0

我正在尝试制作两列布局。左边一栏是导航,右边一栏是内容。

Is there a way to display show.html.erb, edit.html.erb, and new.html.erbat different times in the right div, when the corresponding navigation is selected, without re-loading the whole page?

我知道我可以为左侧 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
4

2 回答 2

1

但我试图避免单独加载页面”是否意味着您想通过 ajax 而不是完整的新页面加载视图?如果是这样,那么您的链接应该是 aremote_link并且您的视图应该div id='right'使用相应视图的内容更新。

您的链接应使用:remote=>true选项。查看详情

并且您的视图应该响应更新<div id="right">.

这里的另一个链接有更多的见解。

于 2012-09-14T05:52:16.373 回答
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 教程,这是一个很棒的 Rails 教程。然后去Codeschool了解更多。

于 2012-09-14T05:47:47.567 回答