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

提交按钮不保存我的订阅者Ruby on rails

在Ruby on Rails中,如果提交按钮不保存订阅者的信息,可能是由于多种原因造成的。以下是一些基础概念和相关问题的详细解答:

基础概念

MVC架构:Ruby on Rails遵循模型-视图-控制器(Model-View-Controller, MVC)架构模式。模型负责业务逻辑和数据存储,视图负责展示数据,控制器处理用户输入并协调模型和视图。

ActiveRecord:Rails的ORM框架,用于数据库交互。

表单提交:通过HTML表单提交数据到服务器,服务器端的控制器接收并处理这些数据。

可能的原因及解决方法

  1. 表单验证失败
    • 确保模型中的验证规则正确无误。
    • 在控制器中检查@subscriber.save是否返回true,如果不返回,可以使用@subscriber.errors.full_messages查看具体的错误信息。
  • 路由问题
    • 确认表单的action属性指向正确的控制器动作。
    • 检查config/routes.rb文件中的路由配置是否正确。
  • 参数传递问题
    • 确保表单字段名称与模型属性匹配。
    • 使用params.require(:subscriber).permit(...)来明确允许接收的参数。
  • 数据库连接问题
    • 检查数据库配置是否正确。
    • 确保数据库服务正在运行并且Rails应用有权限访问数据库。
  • JavaScript冲突
    • 如果页面使用了JavaScript(如jQuery或Rails UJS),确保没有脚本错误阻止表单提交。
    • 使用浏览器的开发者工具检查控制台是否有错误信息。

示例代码

假设我们有一个简单的订阅者模型和相应的控制器动作:

代码语言:txt
复制
# app/models/subscriber.rb
class Subscriber < ApplicationRecord
  validates :email, presence: true, format: { with: URI::MailTo::EMAIL_REGEXP }
end

# app/controllers/subscribers_controller.rb
class SubscribersController < ApplicationController
  def create
    @subscriber = Subscriber.new(subscriber_params)
    if @subscriber.save
      redirect_to root_path, notice: 'Subscriber was successfully created.'
    else
      render :new
    end
  end

  private

  def subscriber_params
    params.require(:subscriber).permit(:email)
  end
end

对应的表单视图可能如下所示:

代码语言:txt
复制
<!-- app/views/subscribers/new.html.erb -->
<%= form_with model: @subscriber, local: true do |form| %>
  <% if @subscriber.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@subscriber.errors.count, "error") %> prohibited this subscriber from being saved:</h2>
      <ul>
        <% @subscriber.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :email %>
    <%= form.text_field :email %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

调试步骤

  1. 检查日志:查看Rails服务器的日志文件,通常位于log/development.log,以获取详细的错误信息。
  2. 使用调试工具:在控制器中使用binding.prybyebug来设置断点,逐步调试代码。
  3. 前端验证:确保浏览器没有因为JavaScript错误而阻止表单提交。

通过以上步骤,你应该能够定位并解决提交按钮不保存订阅者信息的问题。如果问题依然存在,建议进一步检查相关的视图模板和JavaScript代码,以及数据库迁移文件是否正确设置了字段。

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

相关·内容

Ansible和Docker的作用和用法

我保存在本地 ssh 代理上面的 SSH 密钥会通过 Ansible 提供的 SSH 会话分享到远端主机。...Docker 和应用的依赖性 我发现有一点挺有意思的:大部分开发者非常了解他们的应用需要什么版本的编程语言,这些语言依赖关系有多种形式:Python 的包、Ruby 的打包系统 gems、node.js...我认为这是 DevOps 运动(它旨在促进开发与运维团队的和谐相处)的动机之一,开发者负责搭建应用所需要的环境。Docker 使这个任务变得简单明了直截了当,它为现有环境加了实用的一层配置。...另外,一旦一个 Dockedr 镜像编译出来,并且针对我的某个版本的应用的测试都被通过,我就可以把这个镜像提交到一个私有的 Docker Registry 上,可以被其他 Docker 主机下载下来并启动一个新的...如果想获得更多的关于 Ansible 和 Docker 的内容,请订阅 changlog 周报,它会在每周六推送一周最有价值的关于这两个主题的新闻链接。

2.2K20

如何使用Prometheus监控CentOS 7服务器

没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。...输入Prometheus目录: cd ~/Prometheus PromDash是一个Ruby on Rails应用程序,其源文件可在GitHub上获得。...在显示的表单中,为您的目录命名,例如My Dashboards,然后单击Create Directory。 提交表单后,您将被带回主页。立即单击“ 新建仪表板”按钮以创建新仪表板。...在显示的表单中,为仪表板命名,例如Simple Dashboard,然后从下拉菜单中选择刚刚创建的目录。 提交表单后,您将能够看到新的仪表板。 您的信息中心已有一个图表,但需要进行配置。...完成所有更改后,请确保单击右侧的“ 保存更改”按钮以使更改成为永久更改。

6.6K00
  • 用selenium自动化验收测试

    背景知识 在讨论 Selenium 之前,我要介绍关于以下三个话题的一些背景知识,因为这些话题虽然不是本文的主题,但是和本文密切相关: 持续集成 Ajax Ruby/Ruby on Rails...目前,已经有人在致力于将 Selenium 集成到 Ruby on Rails 中,但是在我撰写本文之际,这个集成版本还没有被发布。...在某些平台上,必须执行一些额外的步骤,所以请访问 Ruby on Rails 网站,以获得更多细节。 在我撰写本文之际,目前可用的 Selenium 版本是 0.6。...从命令提示符下运行 Ruby on Rails 回页首 现实中的用例 在本节中,我将列出示例应用程序的用例。...按下登录按钮。 验证是否登录成功。 图 2 展示了用于这些需求的 Selenium 测试用例。注意,我是在运行测试之后截取屏幕快照的。绿色箭头表示成功地通过验证的断言。 图 2.

    6.2K30

    如何使用Prometheus监视您的Ubuntu 14.04服务器

    没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。...将所有组件保存在一个父目录中是个好主意,因此创建一个,以及另一个子目录来存储Prometheus服务器的所有二进制文件。...输入Prometheus目录: cd ~/Prometheus PromDash是一个Ruby on Rails应用程序,其源文件可在GitHub上获得。...在显示的表单中,为您的目录命名,例如My Dashboards,然后单击Create Directory。 提交表单后,您将被带回主页。立即单击“ 新建仪表板”按钮以创建新仪表板。...完成所有更改后,请确保单击右侧的“ 保存更改”按钮以使更改成为永久更改。

    4.3K00

    GitLab 14 轻量化运行方案

    对于开发者和小团队而言,如何相对克制和轻量的使用它变成了一个有挑战的事情。所以本篇文章就来试着针对 GitLab 进行配置调整,让其能够以相对低的资源占用提供服务。...例如,我们有一些项目只使用Issues和Wiki 功能,而不包含代码。 用户B:“Security & Compliance” 是付费选项,作为免费用户,它对我来说毫无用处。...不推荐调整的配置:Gitaly 前文提到不推荐对 Gitaly 服务进行配置调整,因为这个服务对于环境变量的获取和判断使用在逻辑上有一些小问题。...gitaly['ruby_num_workers'] = 3 即使我们只配置 worker 数量,不进行并发数,不设置 cgroups 限制,也会得到类似下面的错误信息,整个应用会一直重启,但是无法提供正常的服务...所以非常不推荐配置折腾这个服务。 其他 还记得前文中,我曾提到“时至今日,GitLab 不论如何优化都难以达到其他聚焦于代码仓库功能的项目”吗?

    4.8K21

    GitLab 14 轻量化运行方案

    对于开发者和小团队而言,如何相对克制和轻量的使用它变成了一个有挑战的事情。所以本篇文章就来试着针对 GitLab 进行配置调整,让其能够以相对低的资源占用提供服务。...例如,我们有一些项目只使用Issues和Wiki 功能,而不包含代码。用户B:“Security & Compliance” 是付费选项,作为免费用户,它对我来说毫无用处。...不推荐调整的配置:Gitaly 前文提到不推荐对 Gitaly 服务进行配置调整,因为这个服务对于环境变量的获取和判断使用在逻辑上有一些小问题。...gitaly['ruby_num_workers'] = 3 即使我们只配置 worker 数量,不进行并发数,不设置 cgroups 限制,也会得到类似下面的错误信息,整个应用会一直重启,但是无法提供正常的服务...所以非常不推荐配置折腾这个服务。 其他 还记得前文中,我曾提到“时至今日,GitLab 不论如何优化都难以达到其他聚焦于代码仓库功能的项目”吗?

    3K40

    一步一步教你注册GitHub账号及简单使用

    GitHub 于 2008 年 4 月10 日正式上线,除了 git 代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)...目前,其注册用户已经超过 350 万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、Python 等。...邮箱一栏:要填写合法邮箱,并且是未在 GitHub 注册过的邮箱,否则会弹出错误提示 密码一栏:注意密码至少是7个字符。 这些填写正确之后,此时点击最下方的绿色大按钮就开始注册了。...1:文件保存至本地仓库,鼠标右击选择 Git Bash Here 配置用户名和邮箱 白线部分分别是账户和邮箱 添加和提交 这里报错是因为 G 盘 GitHub下没有 ....中的 SSH 远程提交:git push origin master JiekeXu0 是我注册的账号,这时再看 GitHub 中的 Mytest 仓库,发现多了一个 Mytest.txt

    54.1K60

    Github for Windows使用介绍

    Github上更是充斥着各种高质量的开源项目,比如ruby on rails,cocos2d等等。...点击上面的 “+Add” 按钮创建一个新的仓库,输入相关信息: ? 4....这个时候我们就可以Publish一个仓库了 Publish之后按钮就变成in sync文字,表示以后的修改提交就是同步,这个时候你到你的github上看应该就会多一个仓库了 ? 6....添加项目仓库在本地保存在一个文件夹中, Github for windows会监视这个文件夹,任何修改都会在仓库中看到,然后像上面一样添加评论就可以将修改提交到本地仓库,这里我们打开仓库目录,往里面添加一个项目...参与开源项目协同开发: github现在已经深度支持Windows开发者了,现在每个在github的开源项目前面都有一个“Clone in Windows”的按钮,我们可以Clone任何我们感兴趣的开源项目

    60310

    精选 Flexport 在 HackerOne 这一年 6 个有趣的安全漏洞

    截至2017/6/27 HackerOne的统计 1 删除按钮中的XSS漏洞 当发起赏金计划时,我们没想到会收到有关 XSS 的有效报告,毕竟 React 中内置了防范这种漏洞的保护措施,不幸的是,...正在筹备长期的解决方案是,从 Bootbox 转移到一个基于 React 的确认模块。 教训: React 阻止了 XSS 不代表所有代码都是安全的。...另外,我们 向 ESLint 提交了一个 Lint 规则,防止以后大家犯同样的错误。 教训: 这个漏洞的关键点是,安全是很难的。我们很容易信任像 HTML 这样的准则,但保持警惕和怀疑同样重要。...我们删除了绝大多数的 Wordpress 插件(其中大部分都不知道何时安装过),更新了其余部分插件,并订阅 https://wpvulndb.com/ 以得到最新的报告。...5 暴力破解 2FA 转到我们的 Ruby on Rails 后端,我们收到了两份值得注意的报告,都涉及了我们的双重认证。

    2.4K80

    解密:Python风靡全宇宙,首要原因竟是它?

    两者都非常适合开发Web应用程序。 Ruby的受欢迎程度与Rails框架密切相关。 在那个年代,大多数自称为“Ruby程序员”其实更应该称自己为 “Rails程序员”。...但实际上,Ruby的流行度与Rails密切相关,而Django只代表了一个已经很活跃的Python生态系统的一小部分。事实也证明,“Web开发语言之战”的重要性远低于人们的预期。...即便从很多层面来讲,Ruby都凭借Rails赢得了这场争战,但这丝毫不影响Python成为当今最受欢迎的语言。这到底是为什么呢?...这一新协议意味着,如果我创建了一个NumPy的int数组,其他库可以直接访问底层内存缓冲区,而不是间接访问或者在使用该数据之前复制该数据。...随着磁存储设备价格暴跌,存储大量数据以供日后分析变得可行(因为数据已经变得很廉价,最好是先把数据保存起来,甚至都不需要去考虑具体要分析什么。)

    66330

    Python风靡全宇宙,首要原因是它?

    两者都非常适合开发Web应用程序。 Ruby的受欢迎程度与Rails框架密切相关。 在那个年代,大多数自称为“Ruby程序员”其实更应该称自己为 “Rails程序员”。...但实际上,Ruby的流行度与Rails密切相关,而Django只代表了一个已经很活跃的Python生态系统的一小部分。事实也证明,“Web开发语言之战”的重要性远低于人们的预期。...即便从很多层面来讲,Ruby都凭借Rails赢得了这场争战,但这丝毫不影响Python成为当今最受欢迎的语言。这到底是为什么呢?...这一新协议意味着,如果我创建了一个NumPy的int数组,其他库可以直接访问底层内存缓冲区,而不是间接访问或者在使用该数据之前复制该数据。...随着磁存储设备价格暴跌,存储大量数据以供日后分析变得可行(因为数据已经变得很廉价,最好是先把数据保存起来,甚至都不需要去考虑具体要分析什么。)

    81770

    Github开源之旅启程:GitHub 上部署网页

    GitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。...目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。 (一)Github官网展示如下: ?...(二)Github的优势 1、只支持Git格式:最好的版本管理系统 2、完整协议支持:http协议、ssh协议等 3、在线文件编码 4、社交网络元素 5、特色工作模式 6、私有仓库托管 7、Ruby on...8.创建Git仓库(Repository):点击右上角的加号创建仓库 ? 填写仓库名称就可以点击下面的绿色按钮创建了。...(4)commit代码,把代码的一个版本提交到本地; git commit -m "版本日志" ? (5)push代码,把代码推(上传)到云端仓库,稍等一会儿就好了。

    85930

    慢的不是 Ruby,而是你的数据库

    处理大型数据集,使这成为一个真实而恼人的问题。 但两者的绝对差异又如何呢?Ruby 版本仅慢 1.2 秒多一点。这在测试和开发过程中已经足够令人恼火了。...我个人主要使用 Ruby 编写代码,但很少涉及 Rails(因为我不太喜欢它),不过我是个例外。在 Ruby 开发中,几乎总是采用 “用 Rails 进行 Web 开发” 的方式。...而且,Rails 的规模相当庞大 [3]。与 Ruby 语言类似,它更侧重于人机工程学(对开发者友好度)而非性能。这是好事!...同样地,由于查询操作非常简单,不涉及复杂内容,因此在数据库中所花费的时间非常有限。...因为对于 Rails,我确信性能问题是概念性的。如上所述,技术性能问题是由 Ruby 而不是 Rails 引起的。

    15130

    不要学习“网红”编程语言

    无论是 Ruby 还是 Ruby on Rails,多年来在 Google Trends 都处于一路走低的状态。 如上图所示,二者先是急剧上涨、然后是一路横盘。...现在,Ruby 确实不咋行了 接下来,让我们一起从课程、实践、社区情况来看看当年盛极一时的网红编程语言发展现状。 现在,很多朋友可能注意到,专门的 Ruby 播客或者新闻网站已经越来越少。...我能想到的诞生于 2010 年之后、而且运行在 Ruby 或 Rails 上的成功厂商就只有 Stripe(2011 年)和 Gitlab(2014 年)。...在比较流行的 Ruby 开源项目方面,我能想到的也只有 Discourse 和 Mastodon。...那我们是不是不该在职业规划中学习 Ruby 或者 Rails?话可不能这么说。市场对于 Rails 和 Ruby 开发者的需求仍然相当旺盛,或者说市场对任何语言的开发者都需求旺盛。

    2.1K30

    如何部署Mina:入门教程

    准备系统 为了安装Ruby,我们首先需要准备最小的CentOS服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。...在官方CentOS存储库中找不到一些方便的库和软件包(例如libyaml-devel,nginx等)。 为简化操作而不处理手动安装,我们将为YUM包管理器添加EPEL软件存储库以供使用。...Ruby的安装,让我们让RVM下载并安装Ruby版本2.1.0: rvm reload rvm install 2.1.0 由于Rails首先需要一个JavaScript解释器才能工作,我们还需要设置Node.js...ruby环境和rails,可以参考腾讯云开发者实验室在 Linux 上部署 Ruby On Rails 环境,腾讯云社区也提供Ruby中文开发者手册,欢迎使用。...按CTRL + X并按Y确认保存并退出。 使用config / deploy.rb 接下来,打开由Mina创建的文件deploy.rb,去定义您的部署服务器并设置任务。

    4.5K40

    如何使用RVM在FreeBSD 10.1上安装Ruby on Rails

    介绍 Ruby on Rails,简称RoR,是一个用Ruby编写的非常流行的全栈Web应用程序开发框架。它允许您快速开发符合MVC(模型 - 视图 - 控制器)模式的Web应用程序。...没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。 具有root权限的用户。(默认的freebsd用户使没问题的。)...2 /dev/gpt/swapfs none swap sw 0 0 fdesc /dev/fd fdescfs rw 0 0 保存并退出文件...50295) [x86_64-freebsd10.1] 第4步 - 安装Ruby on Rails 在这一步中,我们将安装Ruby on Rails。...因为Ruby on Rails是一个gem,所以可以使用RubyGemsgem install rails(Ruby的包管理框架)轻松安装它。

    4.6K10

    3种提高编程技能的有趣方法来帮忙

    为什么不试试一些激动人心的方法来使学习更有乐趣呢?下面介绍的这些网站每个都有自己独特的风格,但是它们都加入了游戏元素。这些稀奇古怪而有趣的游戏能够使你找回学习的乐趣。...另外,他们已经把所有东西开源了所以能人巧匠们(使用者)可以开发他们自己的关卡。 Code Wars:你可以使用Ruby,JavaScript或Coffeescript来完成kata。...一个kata可以由不同的语言完成,这样你就可以很好的理解不同的语言如何完成同样的任务。 Code School:通过订阅,你可以参加任何你喜欢的课程并且在任何时候切换它们。...、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++...四、 Java开发者应该列入年度计划的5件事 开发一个应用,通过Java来操作一种NoSQL数据库实现存储 在Java Paas云平台上实现一个应用,并邀请你5位朋友来使用 什么是真正的软件设计?

    1.3K60
    领券