首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rails 3中的部分表单需要不同的链接,具体取决于New或Edit

在Rails 3中,部分表单需要根据是新建(New)还是编辑(Edit)来使用不同的链接。这通常用于在表单提交时,根据对象是新建还是已存在来决定是创建新的资源还是更新已有的资源。

为了实现这个功能,可以使用Rails的表单助手方法和路由帮助方法来生成不同的链接。具体步骤如下:

  1. 在控制器中,根据请求的动作(Action)来判断是新建还是编辑。可以使用params[:id]参数来判断是否存在ID,如果存在则表示编辑,否则表示新建。
  2. 在视图文件中,使用表单助手方法生成表单。根据新建或编辑的条件,使用不同的链接。可以使用form_for方法来生成表单,同时使用url选项来指定表单提交的URL。
代码语言:ruby
复制

<% if @object.new_record? %>

代码语言:txt
复制
 <%= form_for @object, url: create_object_path do |f| %>
代码语言:txt
复制
   <!-- 表单字段 -->
代码语言:txt
复制
 <% end %>

<% else %>

代码语言:txt
复制
 <%= form_for @object, url: update_object_path do |f| %>
代码语言:txt
复制
   <!-- 表单字段 -->
代码语言:txt
复制
 <% end %>

<% end %>

代码语言:txt
复制

在上面的代码中,@object表示要创建或编辑的对象,create_object_pathupdate_object_path分别表示创建和更新的路由路径。

  1. 在路由文件中,定义创建和更新的路由。可以使用resources方法来定义资源的路由。
代码语言:ruby
复制

resources :objects, only: :create, :update

代码语言:txt
复制

上面的代码定义了objects资源的创建和更新路由,只包含createupdate动作。

这样,当访问新建表单时,将使用create_object_path作为表单提交的URL;当访问编辑表单时,将使用update_object_path作为表单提交的URL。根据不同的链接,可以在控制器中处理不同的逻辑,实现新建和编辑的功能。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景

我们是用在第二部分中讨论过Html.ActionLink辅助方法来显示这些HTML超链接(譬如,Edit,在"Edit"链接被点击后,...然后我们还将使用Html.ActionLink辅助方法在页面底部生成一个Add New Product链接,在该链接被点击后,用户将被导向到"New...例如,对上面的“添加产品”屏幕,我们会选择在ProductsController上2个不同action中来实现:一个叫"New",另一个叫"Create"。...具体来说,它要求用户知道正输入产品原始CategoryID和SupplierID成员。我们需要通过显示内含可读名称HTML下拉框来修正这个问题。...这意味着,如果我们改变我们网站编辑功能路径选择规则的话,我们不需要改动控制器视图中任何代码。

5.1K70

架构之美:教你如何分析一个接口?

你对细节部分了解会随着你对项目的深入而逐渐增加。而有了主线,就有着力点,可不断深入。 但要学习不只是这些接口用法,要想从项目接口设计上学到更多,就需要关注它所引导风格。 为什么要看风格?...它希望你怎样使用它二次开发。 还要维护项目的一致性,必须统一风格。不少项目里共存多种不同风格接口,就是每个人都在各设计各习惯接口,导致混乱。...:format) articles#new edit_article GET /articles/:id/edit(....就是不同编程接口所造成。...使用Rails,这就是一个命令: $ rails new article-app 这个命令执行结果生成不仅仅是源码,还有一些鼓励你去做最佳实践,比如: 它选择了Rake作为自动化管理工具,生成了对应

2.2K20

Laravel 控制器:从 MVC 模式聊起

注:当然,如果是非常简单应用,比如只是简单数据库增删改查数据渲染,放到控制器里面也无妨,但是如果后续需要调用控制器方法才能完成某个功能,那么是时候将这个控制器方法里业务逻辑拆分到 Service...注:这里需要注意是控制器 TaskController 完整命名空间是 App\Http\Controllers\TaskController,但是我们在定义路由时候只用了类名,关于这一点我们在上一篇教程命名空间前缀部分已经提到过...,在代码运行时会根据配置从服务容器获取接口对应实现类执行具体接口方法,从而极大提高了代码可维护性和可扩展性。...POST post store() post.store 获取表单提交数据并保存新文章 GET post/{post} show() post.show 展示单个文章 GET post/{id}/edit...edit() post.edit 编辑文章表单页面 PUT post/{id} update() post.update 获取编辑表单输入并更新文章 DELETE post/{id} destroy(

11.2K51

Web Hacking 101 中文版 十六、模板注入

这个报告最开始由一个博文支持(它在更早时候发布),并包含一些nVisium.com博客不错链接(是的,执行 Rails RCE 同一个),它展示了如何绕过沙箱功能: https://nvisium.com...基于他们 WriteUp,RoR 控制器在 Rails APP 中负责业务逻辑。这个框架提供了一些不错健壮功能,包括哪些内容需要渲染用户,基于传给渲染方法简单值。...但是,当你让 Rails 渲染一些东西,并且它找不到合适文件来使用,他就会在RAILS_ROOT/app/views,RAILS_ROOT和系统根目录中搜索。 这就是问题部分。...在 ERB 模板语言中,表示要背执行和打印代码。所以这里,这是要执行命令,或者允许远程代码执行。 重要结论 这个漏洞并不存在于每个 Rails 站点 - 它取决于站点如何编码。...当你知道站点使用 Rails 构建一定要注意,因为它遵循通用 URL 约定 - 基本上,它/controller/id用于简单 GET 请求,或者/controller/id/edit用于编辑,以及其他

3.7K10

Struts2 之 modelDriven & prepare 拦截器详解

action 方法时且将要操作员工 empId 以参数形式传入 对现有员工信息进行编辑时候需要先将其信息回显到表单再进行编辑 解决思路 Employee-show.jsp 首先将所有员工信息获取到并于页面展示...如上显示页面中每个员工信息行尾都会添加两个操作链接分别为 Edit 和 Delete Employee-edit.jsp 点击某员工行后 edit链接,其流程如上显示页面所述。...点击edit链接时候会将所操作员工 id 传入 action 方法,即 edit() 方法,edit() 方法将会从现有的员工信息中获得对应员工信息将其回显在 Employee-edit.jsp...emp-delete.action 点击员工行后 delete 超链接,由于删除不需要任何页面,所以执行完删除操作之后跳转到 emp-show.action 显示操作后员工信息。 ?...edit 还是 show,这取决于是否有参数 empId,决定了 Employee 对象是新建还是依据 empId 获取 * */ if (empId !

90270

前后端分离,谁值得拥有? | TW洞见

本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。...比如,Rails背景团队会分离出Rails API,把前、后端放在不同代码库中,但开发过程中,往往会把前、后端代码放在同一个编辑环境中,因为前端代码目录中没有足够信息进行独立开发,而后端代码目录也没有足够信息确定是否会影响到前端...轻前端类型系统具有以下特点: 对页面布局、配色、字体没有具体要求,好看就行 只有比较简单特效 只有简单表单验证、表单提交 几乎没有自定义拖拽、滚动操作 不需要Responsive,在不同终端布局能适应即可...不需要Native App 重前端类型系统具有以下特点: 对页面布局、配色、字体有具体要求,甚至有一些创新性设计 有很多特效 有复杂业务逻辑 有自定义拖拽、滚动操作 需要Responsive...一方面因为涉及前端技术并不复杂,开发人员应该能够掌握大部分技能,不会需要花费很多时间学习新技能。另一方面,把前、后端代码组织在一起也便于开发过程中查找相关信息。

77680

ASP.NET MVC5高级编程——(4)表单和HTML辅助方法

本章主要内容: 表单辅助方法、表单元素辅助方法、链接辅助方法、PartialView和 ChildAction方法。...HTML辅助方法主要作用:顾名思义,HTML辅助方法是用来辅助HTML开发:确保HTML页面链接中URL指向正确位置、表单元素拥有适用于model binding合适名称和值、当model binding...使用布尔类型参数(值为true)来告知辅助方法排除属性级别的错误,而不显示那些具体模型属性相关错误。...修改先前控制器操作: 1 public ActionResult Edit(int id) 2 { 3 ViewBag.Album = new Album {Price = 11}; 4...HTML标记: 1 LinkText 当需要一个指向不同控制器操作链接时,可通过ActionLink方法第三个参数来指定控制器名称

2.9K30

通过 Laravel 创建一个 Vue 单页面应用(四)

在处理第一个表单时,我们有机会了解如何定义动态 Vue 路由。我们路由动态部分是与用户数据记录匹配用户 ID。...对于编辑用户,Vue 路由如下所示: /users/:id/edit 这个路由动态部分是 :id 参数,它将取决于用户 ID。...现在你打开 /users/1/edit 应该看到一个空白表单: 我们准备编辑已经存在用户,所以下一步会说明怎么获取路由中动态 :id ,在 UsersEdit.vue 中加载用户数据。...这是我在 第二部分 创建了 UsersIndex.vue 模板,并为 /users 索引页上列出了每个用户添加编辑链接方式: <li v-for="{ id...我<em>的</em>目标为:设置提示消息,并将用户重定向回先前<em>的</em>位置(即, /users 页)。 第二个目标,在<em>表单</em>底部添加一个 返回 <em>或</em> 取消 按钮,来放弃更新,并返回上一页。

2K10

Struts2 之 modelDriven & prepare 拦截器详解

action 方法时且将要操作员工 empId 以参数形式传入 对现有员工信息进行编辑时候需要先将其信息回显到表单再进行编辑 解决思路 Employee-show.jsp 首先将所有员工信息获取到并于页面展示...如上显示页面中每个员工信息行尾都会添加两个操作链接分别为 Edit 和 Delete Employee-edit.jsp 点击某员工行后 edit链接,其流程如上显示页面所述。...点击edit链接时候会将所操作员工 id 传入 action 方法,即 edit() 方法,edit() 方法将会从现有的员工信息中获得对应员工信息将其回显在 Employee-edit.jsp...emp-delete.action 点击员工行后 delete 超链接,由于删除不需要任何页面,所以执行完删除操作之后跳转到 emp-show.action 显示操作后员工信息。 ?...edit 还是 show,这取决于是否有参数 empId,决定了 Employee 对象是新建还是依据 empId 获取 * */ if (empId !

89720

GitLab 任意文件读取漏洞 (CVE-2016-9086) 和任意用户 token 泄露漏洞

注:8.9.0-8.13.0版本gitlab项目导入功能需要管理员开启,8.13.0版本之后所有用户都可以使用导入功能。...于是漏洞发现者Jobert Abma巧妙使用了软链接来达到读取任意文件目的。首先,我们给VERSION文件加上软链接并重新打包。...3.点击edit project,找到Export project部分,点击Export project,等待几分钟去查看注册邮箱收到下载地址或者刷新页面,点击Download export下载导出包...Projects::ImportExport::ExportService.new(project, current_user).execute 由于笔者之前没有接触过ruby,这里只好采用gitlab-rails...不得不说,笔者所实现这种方式攻击时间跨度很长,能否执行命令取决于开发者下一次更新时间,这也是这种方法缺点之一。

2.6K70

ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

Edit(编辑)链接是由Views\Movies\Index.cshtml视图 中Html.ActionLink方法所生成 @Html.ActionLink("Edit", "Edit", new...ActionLink方法第一个参数是想要呈现链接文本 (例如,Edit Me)。第二个参数是要调用操作方法名称(在本例中, Edit方法)。...ModelState.IsValid方法用于验证提交表单数据是否可用于修改(编辑更新)一个Movie对象。...注意,为了使jQuery支持使用逗号非英语区域验证 ,需要设置逗号(",")来表示小数点,你需要引入globalize.js并且你还需要具体指定cultures/globalize.cultures.js...脚本\jquery.globalize\cultures\ 文件夹下面会包含很多不同文化JavaScript文件 注意事项:安装这个包,预计花费5分钟时间(取决于网速).

6.7K110

Linux curl 表单登录提交与cookie使用

我们不知道这些网站后台限制校验机制具体是什么,因此直接curl表单登录可能是不行。 当然,如下案例是可以用curl登录。...获取表单字段信息 ? 获取表单提交链接 通过下图可得到表单提交链接信息。具体如下: 1 https://leancloud.cn/1.1/signin ?...flag:一个 TRUE/FALSE 值,表明给定域中所有机器是否都可以访问该变量。此值由浏览器自动设置,具体取决于你为域设置值。 path:变量在域中有效路径。...secure:一个 TRUE/FALSE 值,表明是否需要与域安全连接来访问变量。 expiration:该变量将过期UNIX时间。...推荐阅读 Linux curl 命令详解 Linux curl 常用示例 Linux curl 表单登录提交与cookie使用 ---- 如果觉得不错就点个赞呗 (-^O^-) !

1.6K32

关于“Python”核心知识点整理大全56

我们将再次定义URL,编写视图函数 和模板,并链接到添加新条目的网页。但在此之前,我们需要在forms.py中再添加一个类。 1....用于添加新条目的表单 我们需要创建一个与模型Entry相关联表单,但这个表单定制程度比TopicForm要高些: forms.py from django import forms from...小部件(widget)是一个HTML表单元素,如单行文本框、 多行文本区域下拉列表。通过设置属性widgets,可覆盖Django选择默认小部件。...链接到页面new_entry 接下来,我们需要在显示特定主题页面中添加到页面new_entry链接: topic.html {% extends "learning_logs/base.html...URL模式edit_entry 这个页面的URL需要传递要编辑条目的ID。

11910

通过 Laravel 创建一个 Vue 单页面应用(六)

我们将完成基本 CURD 最后一部分:创建新用户。您已经拥有了我们之前讨论过主题中所需要所有工具,因此可以尝试创建用户并将本文与您工作进行比较。...如果您需要跟上,我们在 第5部分  中停止了删除用户功能,以及在成功删除后如何重定向用户。我们还研究了如何将 HTTP 客户机提取到一个专用模块中,以便在整个应用程序中重用。...组件其余部分与 UsersEdit 组件相同,除了添加了 password 输入。创建新用户需要密码。我们在编辑用户时跳过了密码字段,因为通常情况下,您有一个与编辑用户不同特定密码更改流。...请注意,我们可以花一些时间将 create 和 edit 视图中表单提取到一个专用组件中,但我们会将其保留一段时间(或者可以自由地独立处理)。...唯一区别是用现有用户数据(包括用户id)填充表单,而不是用空表单创建用户。 配置路由 接下来,我们需要配置 Vue 路由并链接到页面,以便可以导航到用户创建页面。

3.8K20

带你认识 flask 个人主页和头像

', title='Edit Profile', form=form) 这个视图函数处理表单方式和其他视图函数略有不同。...但是当validate_on_submit()返回False时,可能是由于两个不同原因。这可能是因为浏览器刚刚发送了一个GET请求,我需要通过提供表单模板初始版本来响应。...也可能是这种情况,浏览器发送带有表单数据POST请求,但该数据中某些内容无效。对于该表单,我需要区别对待这两种情况。...当第一次请求表单时,我用存储在数据库中数据预填充字段,所以我需要做与提交相反事情,那就是将存储在用户字段中数据移动到表单中,这将确保这些表单字段具有用户的当前数据。...}}">Edit your profile {% endif %} 请注意我巧妙使用条件,它确保在查看自己个人主页时出现编辑个人资料链接,而在查看其他人个人主页时不会出现 ?

1.7K20

手工检测Web应用指纹一些技巧

所有组件都有不同行为,这些不同行为将影响漏洞存在性和可利用性。所有组件(无论是客户端还是服务端)都有可能产生漏洞或者其他安全问题。...另外,包括Android应用 webview 以及部分PC客户端应用(比如QQ或者某些游戏登陆器),也会引入一部分 web 客户端技术。...需要注意是(低概率事件),某些脑洞奇特管理员/开发者/运维可能会将Java编写程序用.php结尾,或者让某些PHP应用使用.do结尾。.../12/edit # will give you the page to modify the object with the id 12; 则很有可能是由 Ruby On Rails 或者 Python...或者在URL中删除部分参数,删除部分cookie中参数(chrome 插件 edit this cookie)。 不熟练Django开发者可能会开启调试模式 ?

3.1K70

Linux curl表单登录提交与cookie使用详解

前言 本文主要讲解通过curl 实现表单提交登录。单独表单提交与表单登录都差不多,因此就不单独说了。 说明:针对curl表单提交实现登录,不是所有网站都适用,原因是有些网站后台做了限制或有其他校验。...我们不知道这些网站后台限制校验机制具体是什么,因此直接curl表单登录可能是不行。 当然,如下案例是可以用curl登录。...获取表单字段信息 ? 获取表单提交链接 通过下图可得到表单提交链接信息。具体如下: 1 https://leancloud.cn/1.1/signin ?...flag:一个 TRUE/FALSE 值,表明给定域中所有机器是否都可以访问该变量。此值由浏览器自动设置,具体取决于你为域设置值。 path:变量在域中有效路径。...secure:一个 TRUE/FALSE 值,表明是否需要与域安全连接来访问变量。 expiration:该变量将过期UNIX时间。

1.1K31
领券