如何修改edit页面接收到的值

刚接触rails,不知道怎么表述到点子上。
脚手架生成的edit页面显示有多个物品ID的text_field :item_id,我想在打开edit页面时候显示物品名称而不是ID(从另items物品表根据ID查找名称)
attr_accessor :name
def name=(attr)
items = Oa::Item.where('name=?', attr)
if items.size == 0
item = Oa::Item.create(:name=>attr)
self.item_id = item.id
else
self.item_id = items.first.id
end
end
编辑之后总会新建新物品。。。

2个回答

首先,你的了解一下REST, [quote]http://guides.rubyonrails.org/v2.3.11/getting_started.html#rest[/quote]

简单的讲一下你没有修改前的流程.
当你打开edit页面时,会生成一个form,如果你的model是Post,那么form的url应该是/posts/1,这个1是被编辑元素的id,还会在form表单生成一下隐藏的字段_method,它的值是put,到服务器处理时,这个请求是当作一个put请求,而不是post请求.
提交到,到控制器的update方法,update方法首先根据id查找到Post,再更新其属性.

你要显示什么是改view,而不是改modle

我觉得你应该把这本书的示例先做做

慢慢来,这是一个积累的过程

只要它与Post关联,你通过关联就可以拿到你想要的东西

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问