新手问题 controller 中,update 和 edit 的区别是啥?(已经大概理解了,只是没有完全理解)

cqcn1991 · 2013年01月17日 · 最后由 cqcn1991 回复于 2013年01月18日 · 5219 次阅读

http://stackoverflow.com/questions/3910783/restful-rails-edit-vs-update 这里已经基本解答了我的问题

update 用来更改数据,对应 put edit 则是用来 render view 的,对应 get

只是这样感觉没有理解的很透彻 在写 controller 的时候,找不到一个比较自然的思路……总是会想叉……

希望哪位能提点一下……

edit 就是出一个 form,update 就是执行更新吧。

edit 只是为 update 操作提供个界面而已

你卖了老房子,买了套新房子,于是你搬家了。

搬家你就得到派出所改户口本吧? ( change record ) 那么你到派出所,拿一张表格 ( edit action, 由于是你去 get 一张表,所以用 get 动作 ) 然后你填填填,填好了,把表格交回给派出所让他们给你 update 你的记录 ( update action,由于是你把更改信息提交给服务器,所以用 put 动作 )

然后就完事儿了。

这样说楼主就好理解了吧?

#3 楼 @blacktulip 我看糊涂了。

#3 楼 @blacktulip ……这个先容我好好理解一下 再问一个相关的小问题,是不是 edit 不一定在相应的 controller 下面,而 update 必然在 model 的 controller 下面? 比如说,我在 home 页可以 edit post。那么就在 home action 下写@post,但是 update action 依然写在 post controller 下 (比如 ruby on rails tutorial 中就是在首页显示 microposts)

也就是说,controller 中实际有 2 种 action,一种是对于显示的(get),一种是对于创建的(post)。create,update 这些 action 必然是写在相应 model 下的 controller 中的 是这样么?

#5 楼 @cqcn1991 我没看明白......

update edit 这个两个次都是 修改的意思 rails 特意这么设计的,就是为了符合 restful。

如果只用一个词的话,比如 edit, 那么,action 的名字,就是 edit_get edit_put create 和 new 也是同样的问题。

没有什么太深层的含义,就这什么设计的。 千万不要想太多。

#6 楼 @blacktulip ……那就算了……继续写着试试看了

#7 楼 @ery 嗯……不想太多了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号