Rails 4 带有 link_to 和带有强参数的方法 post

2024-05-24

我陷入了一个不可能那么复杂的问题,但我只是没有把事情做好。

假设我有两个模型:

class Notification < ActiveRecord::Base
  belongs_to :device

  validates :number, presence: true
end

and

class Device < ActiveRecord::Base
  belongs_to :user
  has_many :notifications, :dependent => :destroy

  //rest omitted for brevity
end

像这样的嵌套路由:

 resources :devices do
   resources :notifications
 end

和一个通知控制器,如下所示:

class NotificationsController < ApplicationController
  before_filter :authenticate_user!
  before_action :set_device, :only => [:index, :new, :create]
  before_filter :load_notification, only: :create

  load_and_authorize_resource :device
  load_and_authorize_resource :notification, :through => :device


  def index
  end

  def new
    @notification = @device.notifications.build
  end

  def create
    params.each do |param|
      logger.debug param
    end
    @notification = @device.notifications.build(notification_params)
    if @notification.save
      redirect_to [@notification.device, @notifications], notice: 'Notification was successfully created.'
    else
      render action: 'new'
    end
  end

  private

  def load_notification
    @notification = Notification.new(notification_params)
  end

  def set_device
    @device = Device.find(params[:device_id])
  end

  def notification_params
    params.fetch(:notification, {}).permit(:number, :device_id, :message)
  end
end

现在说到创建通知: 该表格按预期工作。但是:我想实现第二个目标。 通知应该是可重新发送的,所以我在通知索引视图中有这个:

<%= link_to 'Resend', device_notifications_path(number: notification.number, message: notification.message), :method => :post %>

但验证失败,我重定向到新页面,没有任何预填充字段告诉我该数字是必需的,因此肯定缺少一些我不明白的明显内容。

请求中的参数:

[["user_id", xyz]]
["_method", "post"]
["authenticity_token", "myauthenticitytokenstring"]
["number", "+1555123456789"]
["action", "create"]
["controller", "notifications"]
["device_id", "9"]
["notification", {}]

(留言非必填)

我认为错误出在控制器中的 notification_params 方法中。

有人可以帮我吗?


我刚才遇到了类似的问题,这对我有用:

<%= link_to 'Resend', device_notifications_path(@notification.device_id, notification: { number: notification.number, message: notification.message }), :method => :post %>

基本上,您需要将控制器/模型数据包装到控制器参数的哈希中。这就是控制器本身读取它的方式。另外,你有没有错过device_id在你的device_notifications_path ?

[["user_id", xyz]]
["_method", "post"]
["authenticity_token", "myauthenticitytokenstring"]    
["action", "create"]
["controller", "notifications"]
["device_id", "9"]
["notification", {["number", "+1555123456789"]}]

现在,我这么说只是假设device_id位于您的 URL 路由中:http:\\localhost:3000\notifications\9

这就是为什么device_id不必在哈希本身中。这只是基于我在这里的假设,没有更多的内容view and routes继续。总而言之,它确实与哈希有关。玩一下,然后使用p打印出development.log中的数据进行测试:

def create
  p params
  p notification_params

  ...
end

此外,可选但不是必需的,您可以使用 DRY up 控制器的参数 def.require代替.fetch像这样:

private

def notification_params
  params.require(:notification).permit(:number, :device_id, :message)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 4 带有 link_to 和带有强参数的方法 post 的相关文章

  • 从 elm 代码提交表单

    我有这个框架集划分 这是我的elm逻辑在里面main html import Html exposing import Html Attributes exposing view Model gt Html Msg view model H
  • 在 Swift 中上传带有其他参数的多张图片

    现在 我通过下面给出的代码仅将一张图像上传到服务器端脚本上的服务器 现在我有一个数组UIImage 我想知道如何使用UIImageJPEGRepresentation myImageView image 0 1 将所有图像发布到UIImag
  • MVC 中的 HttpPost 与 HttpGet 属性:为什么使用 HttpPost?

    所以我们有 HttpPost 这是一个可选属性 我知道这会限制调用 因此只能通过 HTTP POST 请求进行调用 我的问题是我为什么要这样做 想象一下以下情况 HttpGet public ActionResult Edit int id
  • jQuery Datepicker showAnim 没有动画

    我尝试了多种方法并在互联网上搜索 试图让动画发挥作用 但一无所获 我有日期选择器工作和日期格式选项 但没有动画 我希望使用 剪辑 选项 以下是各个文件中的内容 应用程序 js require jquery require jquery tu
  • Ruby on Rails link_to 与 put 方法

    我是 Rails 新手 我正在尝试使用 link to 帮助程序创建一个发出 PUT 请求而不是 GET 请求的链接 具体来说 我正在尝试创建一个链接 从管理员面板激活我的应用程序中的用户帐户 我正在使用 Rails 3 0 5 我的rou
  • 如何在 Java Android 中为客户端请求设置 HttpPost 标头

    我无法让 Apache HttpClient 正确发送 HttpPost 标头 我在发送名称值对等方面没有任何问题 但是每当我设置或添加 POST 标头时 它就会在发出请求时消失 我尝试过 setHeader 和 addHeader 以及同
  • 如何从 Rails 中的枚举值获取键名?

    我的模型中有一个与数据库中的列相对应的枚举 枚举看起来像 enum efficency High 0 Medium 1 Low 2 如何从值中获取密钥 例如 我的值为 0 我需要获取值 High 任何帮助 将不胜感激 Model effic
  • Rails 4 - 如何在活动记录查询中为includes()和joins()指定别名

    我如何给出别名 例如includes 给出如下 用户 活动记录模型 Student 活动记录模型 继承自User STI Teacher 活动记录模型 继承自User STI 项目 活动记录模型 这里有一些例子 第一个案例 更多性传播感染协
  • ActionMailer 响应“501 5.5.4 无效参数”

    我正在 Ruby 2 0 0 上使用 Rails 4 开发一个应用程序 在 Devise 中注册后 应用程序会发送一封电子邮件 这是发送电子邮件的代码 应用程序 模型 sponsor rb after create send email t
  • Rails3 中带有块的 link_to 的语法,其中 :remote=>true 并包括 :class 和 :id

    看在上帝的份上 我已经为此绞尽脑汁好几个小时了 使用rails3 rc 1 9 2 我正在尝试创建一个 link to 来提交一个ajax请求 其中包含参数 类和id 并且需要一个块 以便我可以在名称周围插入一个span标签 文档的帮助绝对
  • Turbolinks 访问的页面中缺少 hubspot 聊天界面,但可用于全页面刷新

    我想将 hubspot 聊天界面集成到我的 Rails 4 Turbolinks 应用程序中 我已将 Google 跟踪代码管理器配置为在每个页面加载事件中显示支持聊天界面 该界面工作正常 GTM 标签 自定义 html PROBLEM 当
  • Rails 会话间歇性重置

    我知道这个主题已经被讨论了很多 但我相信我已经找到了它的一个新变体 我有一个 Rails 4 应用程序 它是从 Rails 3 升级的 并且具有rails ujs and csrf meta tags设置正确 一旦root url在浏览器中
  • 如何允许具有 Rails 强参数的哈希

    我正在开发一个带有名为 element 的 atter accessor 对象的模型 我想将表单数据数组传递给元素对象 在 Rails 控制台中 我收到 未经允许的参数 错误 Parameters authenticity token gt
  • Rails 4 params.require().permit() 不考虑一个属性

    我在使用时遇到问题params require permit 方法 因为它没有考虑我为其设置的属性之一 即属性 on 我所拥有的是这样的 def event recurrence params params require event re
  • 从 Rails 4 启用 Amazon RDS 中的 hstore 扩展

    我有一个 Rails 4 应用程序 它使用 ActiveRecord 与 PostgreSQL 9 3 数据库交互 该应用程序利用hstorePostgreSQL 中的扩展 用于在单个数据库字段中存储键值对 因此 Rails 会自动检测我对
  • Android:发送文件到服务器:PHP 在服务器中接收该文件

    在我的应用程序中 我必须将 csv 文件发送到服务器 我尝试了以下代码 HttpPost httppost new HttpPost url InputStreamEntity reqEntity new InputStreamEntity
  • Android Multipart HTTP Post 不发送文件的 MIME 类型

    试图找出我的编码有什么问题 我关注了一篇博客文章here http evgenyg wordpress com 2010 05 01 uploading files multipart post apache 我设法获得了将文件实际上传到
  • 在 Rails 4 中渲染部分/rake 任务/后台作业/模型中的视图

    我读过很多关于在 rake 任务 后台作业 模型中渲染 Rails 部分和视图的内容 我在 Stackoverflow 和网络上找到的绝大多数内容都描述了在 Rails 3 中工作的方法 但它们似乎已经过时了 而且我没有让它们工作 即使花了
  • Play框架2.0 Form.bindFromRequest().get()返回空模型

    我需要从套接字通信接收相同的 POST 数据 这是发送 POST 并接收响应的代码 并且似乎工作正常 String data t URLEncoder encode Title UTF 8 u URLEncoder encode http
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend

随机推荐

  • 内连接中的排序依据

    我将内部连接放入查询中 我得到了结果 但不知道数据如何输入输出 任何人都可以告诉我内部连接如何匹配数据 下面我显示了一个图像 有两张桌子 一张或两张桌子 根据我的说法 第一行应该是 Mohit 但输出不同 请告诉我 In SQL 输出的顺序
  • Clang 代码覆盖无效输出

    所以我按照这些说明检查并构建了 clang trunkhttp clang llvm org get started html http clang llvm org get started html 我可以使用 coverage 构建二进
  • 是否可以创建一个指向函数的“new”运算符/构造函数的函数指针?

    如果我想要参数化创建一个对象 我当然可以创建一个函数 在特定类上调用 new 并传递一个指针 我想知道是否可以跳过该步骤并将函数指针传递给new运营商本身 boost lambda 提供函数包装器new and delete http ww
  • 如何记录函数的全局依赖关系?

    我从第三方供应商 用于嵌入式平台 获得了一些使用全局变量 用于速度和空间优化 的 C 代码 我正在记录代码 转换为Doxygen格式 如何在函数文档中添加函数需要的全局变量和函数的注释 Doxygen有用于注释参数和返回值的特殊命令 如下所
  • 从数据帧创建 sf 多边形

    我有一个包含一组多边形坐标的数据框 这就是我将其转换为spatialPolygons 包sp 的方法 my df lt data frame Plot c A A A A A B B B B B Corner c SW NW NE SE S
  • 如何在c++中使用libcurl发送POST请求并接收它?

    我正在使用 c libcurl 向网页发送 POST 请求 但我正在努力测试它 使用的代码是 include
  • JTable 不断调用自定义单元格渲染器方法...

    编译源可以在以下位置找到 http www splashcd com jtable tar http www splashcd com jtable tar 我是这门语言的新手 所以我不确定这是否可以接受 我创建了一个 JTable 来为收
  • 如何重构这个 switch 语句?

    string liquidClass string Empty switch cmbLiquidClass Text case LiquidClass1 liquidClass Settings Default LiquidClass1 b
  • 如何从 Python 返回 JSON 值?

    我从如下所示的 jQuery 文件发送 ajax 请求 该请求需要 JSON 格式的响应 jQuery ajax url Control getImageDetails file id currentId type GET contentT
  • 如何在 Objective-C 中解析包含 XML 的 NSString?

    在我的 iPhone 应用程序中 我有以下 NSString NSString myxml
  • shell中如何从数组中随机选择一个项目

    我正在 Shell 脚本中创建一个机器人 Array with expressions expressions Ploink Poink I Need Oil Some Bytes are Missing Poink Poink Piiii
  • Android API版本兼容性

    我希望我的应用程序能够在 Android 版本 2 1 和 2 2 上运行 在我的应用程序的一个区域中 有一个肖像式相机 生成肖像相机预览的过程在两个操作系统版本上是不同的 据我所知 具体方法如下 2 1 Camera Parameters
  • Centos 与 Plesk11.x

    我正在使用 Centos 和 Plesk 11 x 以及这篇文章如何获取 RHL 的 Apache mod jk 连接器 https stackoverflow com questions 33381933 how to obtain ap
  • 是否有其他方法可以访问延迟自定义操作中的会话详细信息?

    我有一个自定义操作 需要获取以下值才能将某些部分从安装文件夹复制到 VS2010 文件夹 VS2010目录路径 VS2010DEVENV财产 安装路径 INSTALLLOCATION财产 为了提供足够的权限 我将自定义操作设置为Execut
  • 如何使用 Java 在 Selenium WebDriver 中执行鼠标悬停功能?

    我想在下拉菜单上执行鼠标悬停功能 当我们将鼠标悬停在菜单上时 它将显示新选项 我尝试使用 xpath 单击新选项 但不能直接点击菜单 因此 作为手动方式 我尝试将鼠标悬停在下拉菜单上 然后单击新选项 Actions action new A
  • 查询以查找平均加权价格

    我在 Oracle 中有一个表 每个给定部分包含多行 每行都有一个与其关联的数量和价格 还有一个给定零件的行集相加的总数量 以下是数据示例 我需要的是获得该零件的平均加权价格 例如 如果数量为 100 的零件的价格为 1 数量为 50 的零
  • 从现有数据库表创建内部表的语法?

    我是ABAP新手 开始学习内表 我正在阅读创建内部表的方法 我遇到了以下语法来从现有数据库表创建内部表 data it mara type table of mara 我很困惑 因为 mara 是一张桌子 如果 l h s 和 r h s
  • JMeter:来自 Jenkins 的九个以上参数

    我试图将超过九个参数从 Jenkins 传递到 JMeter4 0 当我阅读时 我发现 JMeter 不接受超过 9 个参数 作为解决方法 我想将所有参数作为字符串传递 并在 JMeter BeanShell 中将其拆分 java jar
  • iPhone 应用程序需要 AAC 许可证吗?

    AAC 是一种音频编解码器 AAC 旨在成为 MP3 格式的后继者 在相似的比特率下 AAC 通常可以实现比 MP3 更好的音质 维基百科上的 AAC http en wikipedia org wiki Advanced Audio Co
  • Rails 4 带有 link_to 和带有强参数的方法 post

    我陷入了一个不可能那么复杂的问题 但我只是没有把事情做好 假设我有两个模型 class Notification lt ActiveRecord Base belongs to device validates number presenc