0 0

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

刚接触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
编辑之后总会新建新物品。。。

问题补充:恩,我基础不好,rails处理流程还是搞不懂,太笨了。。。给我的感觉就是它太聪明,我不知道怎么做的东西它帮我做好了,这种感觉很不喜欢。。。
功能实现了,在模型定义了个方法覆盖虚拟属性的方法。
update方法首先根据id查找到Post,再更新其属性.我在页面要显示的东西在Post属性里是没有的。。。

cxh116 写道
首先,你的了解一下REST,
引用
http://guides.rubyonrails.org/v2.3.11/getting_started.html#rest



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

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

我觉得你应该把<Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版>这本书的示例先做做

2011年11月01日 14:41

2个答案 按时间排序 按投票排序

0 0

采纳的答案

首先,你的了解一下REST,

引用
http://guides.rubyonrails.org/v2.3.11/getting_started.html#rest



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

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

我觉得你应该把<Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版>这本书的示例先做做

2011年11月03日 09:47
0 0

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

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

2011年11月03日 11:24

相关推荐

    asp.net传多个值到其它页面的具体实现

    在页面跳转时,将需要传递的值拼接到URL后面: 前台代码示例: ```asp ("dict_id") %&gt;&type=("dict_type") %&gt;"&gt; 跳到Default.aspx页面 ``` 在目标页面(如Default.aspx)的后台代码中,可以通过Request对象来...

    动态生成控件获取值后,传对象到下一个页面

    5. **在下一个页面接收数据**: 在NextActivity中,可以通过`getIntent().getParcelableExtra()`来获取传递的对象: ```java MyObject receivedObject = getIntent().getParcelableExtra("my_object"); ``` 6....

    vue中更改数组中属性,在页面中不生效的解决方法

    问题描述: 使用vue的方法获取了...一开始我的做法先将接收到的数据赋值到vue的data中,再对vue的data中的数据增加edit属性,这样在改变edit的之后,虽然在js中使用console.log可以看到该值已经发生变化,但页面中的

    php点击修改jeditable插件

    &lt;td id="edit_field" data-type="text" data-url="edit_data.php"&gt;当前值 ``` 接下来,在`edit_data.php`中编写处理逻辑,接收POST或GET数据,进行数据库操作,最后返回相应的响应。如果成功,可以返回JSON数据,...

    php修改代码

    3. **展示和编辑数据**:在`display.php`页面中,添加了修改列并链接到`stu_edit.php`,让用户可以点击进行编辑。在`stu_edit.php`中,首先需要查询出要修改的记录,然后将这些数据填充到表单中供用户编辑。这通常...

    datatable的例子使用--增加删除修改查询

    前端根据响应更新表格,显示修改后的新值。 4. **查询(Query)**:查询功能允许用户根据特定条件查找数据。DataTable提供了内置的搜索框,用户输入关键词后,插件会自动筛选符合的行。此外,还可以通过设置高级...

    Delphi控制TRichEdit组件文字内容滚动..rar

    例如,如果你想要实现一个聊天窗口,每当有新的消息到来时,可以自动滚动到底部,你可能需要在接收到新消息时调用ScrollToCaret方法。又或者,如果你要实现一个阅读器应用,用户可以在页面间平滑滚动,那么可能需要...

    extmail增加公司部门字段

    4. **User.pm 文件**:用户管理的核心模块,`add_user`, `edit_user`, `save_user`等函数需要更新,以接收、验证并保存公司和部门字段的值。可能还需要调整数据验证规则,确保输入的有效性。 5. **OVERVIEW.PM 文件...

    jsp action中保存和修改的关系.docx

    // 功能:得到单个对象并把各个对象放到VO对象中页面中显示数据的值 Ep ep = new Ep(); ep.setId(Long.parseLong(epid)); ep = epService.getEpById(ep); epVO.setEp(ep); // depart对象 Depart depart = new...

    安卓布局入门,页面带参数跳转

    EditText myEditText = findViewById(R.id.my_edit_text); String inputText = myEditText.getText().toString(); ``` 3. **传参跳转(Passing Parameters)**: 当需要在活动之间传递数据时,可以在Intent中...

    使用layer弹窗,制作编辑User信息页面的方法

    在制作编辑User信息页面的过程中,我们需要考虑如何在A页面中打开B页面(即编辑页面)作为layer弹窗,并在B页面中接收并显示从A页面传递过来的User信息。 首先,我们会在A页面设置一个“修改”按钮,当用户点击这个...

    cakephp 实例(增、删、改操作)

    - 在Controller的对应方法中,接收到POST数据后,使用ORM(对象关系映射)的save()方法将数据保存到数据库。 2. **读取(Read)**: - Controller通过调用Model的方法查询数据库,如find(),获取数据。 - 查询...

    简单学生成绩管理系统(mysql+jsp).pdf

    - 按钮事件处理:每个按钮的点击事件通过JavaScript的`onclick`属性关联到相应的JSP页面(如`add.jsp`、`edit.jsp`和`del.jsp`),传递参数(如学号)以便处理对应操作。 3. 查询功能: - 页面上应添加一个表单,...

    vbs基础

    这使得VBScript特别适用于Web页面动态内容生成以及自动化脚本编写等场景。 #### 二、开发工具选择 虽然理论上任何文本编辑器都能用于编写VBScript程序,但推荐使用记事本(Notepad)作为入门工具。对于初学者来说...

    极好的web开发辅助工具DevTools

    8. **工作流优化**:DevTools还支持Live Edit,允许开发者直接修改源文件并实时查看结果,而无需刷新页面。此外,还可以通过`Control + S`快速保存编辑,进一步提升了开发速度。 9. **无障碍性检查**:部分浏览器的...

    C#,asp.net操作mongodb实例,新增,修改,查询,分页查询,删除,基类封装,打开直接运行

    在这个实例中,我们可能有一个名为`MongoDBHelper`的基类,它包含静态方法,如`Add`, `Edit`, `GetList`, `GetPage`, `Delete`等,分别对应于上述的操作。 日志类的引入是为了跟踪和记录应用程序与数据库的交互,这...

    React中使用UEditor百度富文本的方法

    在`componentDidMount`生命周期方法中,我们可以通过`window.UE`获取到UEditor的全局对象,然后使用`UE.getEditor`创建编辑器实例,并传递配置项,例如工具栏、初始内容、是否开启自动高度调整等。 例如,以下是一...

    IBC_TN0001_当期同比的实现方法

    - &SEL_YYM:用于接收时间的变量,其初始值设定为199904,这可以根据实际需求调整。 - &SEL_YEAR:通过EDIT函数从&SEL_YYM中提取年份部分。 - &SEL_MONTH:同样使用EDIT函数从&SEL_YYM中提取月份部分。 - &PREV_YEAR...

    ASP新闻系统

    7. **保存编辑新闻页面(editsave.asp)**:接收用户修改后的数据,处理方式类似`savedata.asp`,只是这次需要更新已有记录而不是添加新记录,因此可能使用`Recordset`的`Edit`和`Update`方法。 8. **数据库操作**...

Global site tag (gtag.js) - Google Analytics