这里是Rails的新手,如果这很简单,请原谅。我很难找到答案,在我深入潜入之前我想知道。
我打算构建的应用程序不会真正区分“显示”视图和“编辑”视图。在大多数情况下,我会有条目列表(索引视图),您只需直接点击编辑视图。没有'显示'视图是必要的。
对于大部分应用来说都是这样的。但是仍然会有一些部分需要“显示”视图。
是否可以设置这样的路由结构?
答案 0 :(得分:3)
是的,您并不总是必须使用所有7个动作。
路由示例:
resources :users, except: :show
控制器:
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
redirect_to edit_user_path(@user)
else
...
end
end
将表单正常添加到编辑视图中,并将其他任何内容添加到您的节目视图中。
答案 1 :(得分:3)
如果不需要显示视图,您只需告诉routes.rb
中的资源路由不包含它,例如:
resources :users, :except => :show
如果您想对编辑和展示使用相同的视图,例如,在show
操作中,您可以执行以下操作:
def show
@user = User.find(params[:id])
render :action => 'edit'
end
当点击显示操作时,这将使用edit.html.erb
文件,但在我看来,您最好的选择是选择您计划使用的视图,并在routes.rb
中省略另一个视图。
如果您只想在两个视图之间共享大量视图代码,但仍然可以区分它们,只需使用Partials作为共享代码。
答案 2 :(得分:1)
是的 - 您只需将表单部分添加到显示页面即可。这很常见。