2

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

我打算构建的应用程序在“显示”视图和“编辑”视图之间并没有真正的区别。在大多数情况下,我会列出条目(索引视图),您只需单击即可直接进入编辑视图。不需要“显示”视图。

大多数应用程序都是这样的。不过,仍有一些部分需要“显示”视图。

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

4

3 回答 3

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

像往常一样将表单添加到编辑视图以及您将在显示视图中放入的任何其他内容。

于 2013-02-12T06:08:18.090 回答
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用于共享代码。

于 2013-02-12T06:08:40.303 回答
1

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

于 2013-02-12T06:03:35.767 回答