在Rails中,是否可以将show视图用作编辑视图?

时间:2013-02-12 05:59:55

标签: ruby-on-rails model-view-controller

这里是Rails的新手,如果这很简单,请原谅。我很难找到答案,在我深入潜入之前我想知道。

我打算构建的应用程序不会真正区分“显示”视图和“编辑”视图。在大多数情况下,我会有条目列表(索引视图),您只需直接点击编辑视图。没有'显示'视图是必要的。

对于大部分应用来说都是这样的。但是仍然会有一些部分需要“显示”视图。

是否可以设置这样的路由结构?

3 个答案:

答案 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)

是的 - 您只需将表单部分添加到显示页面即可。这很常见。