首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails的自定义模型编辑

Rails的自定义模型编辑
EN

Stack Overflow用户
提问于 2022-10-07 12:39:49
回答 1查看 21关注 0票数 0

假设我在Rails中有一个Book模型,并且这个资源模型有预定义的路由,例如/books/:id/edit

现在,在我的应用程序中,我希望显示一个图书列表,并添加一个编辑按钮,每个人都可以编辑这本书,但只有一个特定的字段。我希望通过使用不同的路径和不同的控制器提供不同的视图来实现这一点。

我应该如何定义路由以使其工作,即根据需要传递Book实例的id?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-07 12:55:33

听起来你可以

代码语言:javascript
复制
rails g model book field_one field_two
rails g controller books
代码语言:javascript
复制
# routes.rb
resources :books
patch 'common_update/:id', to: 'books#common_update'

如果您特别想要访问另一个控制器,那么只需创建一个不同的控制器(rails g contoller_name),然后用contoller_name替换路由中的books (注意生成器需要一个复数!)。

代码语言:javascript
复制
# books_controller.rb
def common_update
  @book = Book.find(params[:id])
  if @book.update(common_params)
    # do something
  else
    # do something else
  end
end

def common_params
  params.require(:book).permit(:field_one) # but not field_two !
end

至于视图,您也许可以有条件地为所有者(创建图书的用户)和其他人呈现表单。如果您想要一个单独的视图/显示,还可以在正确的:+1文件夹中添加路由(:+1)和一个视图文件:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73987298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档