Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在前端提交新记录后如何重定向到索引?[Rubymine 2020.2.3,Ruby.2.7.2p137,gem 3.1.2]

在前端提交新记录后如何重定向到索引?[Rubymine 2020.2.3,Ruby.2.7.2p137,gem 3.1.2]
EN

Stack Overflow用户
提问于 2020-12-17 14:10:15
回答 1查看 117关注 0票数 0

我正在为一门大学项目课程而苦苦挣扎,尽管同事和导师提供了一些建议,但我已经被这个错误困扰了好几个星期。

在给定表的create方法中。我正在尝试将包含新记录条目的表单的页面在保存后重定向回索引页面。相反,我被重定向到这个错误,突出显示@courier=Courier.new(courier_new_path),并显示错误,说明它不是一个哈希,并且不会将我重定向回索引。但是,当手动搜索索引时,我发现数据字符串确实会更新。

I have tried renaming the path label, but Rubymine prompt suggestions appear limited, and any further deviation would cause a different error

下面是控制器页面(courier_controller.rb)中的create方法:

代码语言:javascript
运行
AI代码解释
复制
def create
@courier=Courier.new(params.require(:courier).permit(:courier_name,:courier_email))
@courier.save
redirect_to courier_path(@courier)
@courier=Courier.new(courier_new_path)
if @courier.save
  redirect_to(:controller=>'courier' ,:action=>'index')
else
  render('new')
end 
end

以下是表单页面的代码(courier/new/html.erb):

代码语言:javascript
运行
AI代码解释
复制
<h1>Courier#new</h1>
<p>Find me in app/views/courier/new.html.erb</p>
<%= form_with scope: :courier, :url => {:action => 'create'}, local: true do |f| %>

  <p>
    <%= f.label :courier_name %><br/>
    <%= f.text_field :courier_name %>
  </p>

  <p>
    <%= f.label :courier_email %><br/>
    <%= f.text_field :courier_email %>
  </p>

  <p>
    <%= f.submit %>
  </p>
<% end %>

我尝试将@courier重命名为Courier.new(courier_create_path)或Courier.nww(courier_path),我尝试使用散列形式查找参数,但作为我的问题的解决方案,似乎没有一个是模棱两可的或可翻译的。

任何建议都会有所帮助。这是一个大学项目的一部分,作为一个多媒体学生,与其他同行相比,我在编程方面没有那么精明,我非常感谢可以尝试的建议。

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-17 16:05:27

有没有人试着解释一下你的create方法到底是怎么回事?我在每一行后面都添加了注释,以说明该行正在做什么。

代码语言:javascript
运行
AI代码解释
复制
def create
  @courier=Courier.new(params.require(:courier).permit(:courier_name,:courier_email))
# use the params to build a new courier record (the permit part is usually in a separate method that other methods can access but it works this way)
  @courier.save
  # Save the new courier record to the database
  redirect_to courier_path(@courier)
  # Send the user back to the "show" page of the courier record (not index!)
  @courier=Courier.new(courier_new_path)
  # this makes no sense, you are trying to create a new courier object using a path method
  # Basically you are saying: @courier = Courier.new('/courier/new')
  if @courier.save
   #you are trying to save this record that will fail because you can't create a courier by passing it a url
    redirect_to(:controller=>'courier' ,:action=>'index')
     #send the user to the index page of the courier views. 
  else
    render('new')
     #something went wrong so go back to the new courier form.
  end 
end

当您的程序到达第4行redirect_to courier_path(@courier)时,它将退出create方法,并将用户发送到http://my_app:3000/couriers/1,其中数字1将是您刚刚创建的记录的数据库中的ID。这将与app/views/couriers/show.html.erb中的文件相关。这听起来像是您想要进入http://my_app:3000/couriers,它会向用户显示app/views/couriers/index.html.erb文件,我不确定您为什么要在该行之后执行任何操作。

也不清楚你得到的是什么错误。你需要查看你的app服务器控制台,在那里你运行"rails s“,它显示了浏览器和你的应用之间的所有通信。找到以实际错误开头的堆栈跟踪,并将其添加到上面的问题中(不要将其粘贴到评论中,它将太长且无法阅读)。

我想你只需要:

代码语言:javascript
运行
AI代码解释
复制
def create
  @courier=Courier.new(params.require(:courier).permit(:courier_name,:courier_email))
  if @courier.save
    redirect_to @courier #if you want to redirect to their 'show" page
  else
    render('new')
     #something went wrong so go back to the new courier form.
  end 
end

可能会让新程序员感到困惑的是,Rails在幕后做了如此多的“魔术”,如果你还不知道幕后发生的基本概念,就会变得非常困惑。您说的是redirect_to(:controller=>'courier' ,:action=>'index'),它特别说明了“转到快递员的索引页面”,但是您可以说redirect_to @courier,它将假定您想要转到显示您刚刚创建的快递员记录的页面。如果您真的想转到显示所有信使的表,您可以将其替换为redirect_to :couriers,符号:couriers告诉它转到信使控制器的索引方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65342333

复制
相关文章
dotnet C# 获取本机外网 IP 地址
如果有自己的服务器,可以通过自己的服务器使用 asp dotnet core 服务器获取客户 IP 地址 方法,将获取的 IP 地址返回给用户
林德熙
2022/08/04
4.1K0
IP地址
IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。
星哥玩云
2022/09/15
5.3K0
IP地址
IP地址
IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络。
mcxfate
2020/08/01
4.9K0
怎么查看ip地址?什么是IP地址
电脑是我们生活中非常常见的东西,不仅是可以办公还可以上网娱乐。但是对于电脑并非是大家都知道怎么去用,有时候甚至大家连查看IP也不一定会,那么,怎么查看ip地址?下面就让小编给大家介绍吧。
用户8739990
2021/07/12
15.4K0
怎么查看ip地址?什么是IP地址
ip地址
IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。
用户7657330
2020/08/14
4.2K0
IP地址
例如,一个大小为5000字节的数据包在穿过网络时,如果遇到一条MTU为1500字节的数据链路,即数据帧最多容纳大小为1500字节的数据包。路由器需要在数据成帧之前将数据包分段成多个数据包,其中每个数据包长度不得超过1500字节;然后路由器在每片数据包的标识字段上打上相同的标记,以便接收设备可以识别出属于一个数据包的分段。
Nujil
2023/04/12
3.5K0
【TCP/IP】IP地址分类和特殊IP地址
IP地址是因特网技术中的一个非常重要的概念,IP地址在IP层实现了底层网络地址的统一,使因特网的网络层地址具有全局唯一性和一致性。IP地址含有位置信息,反映了主机的网络连接,使因特网进行寻址和路由选择的依据。
全栈程序员站长
2022/08/12
5.2K0
【TCP/IP】IP地址分类和特殊IP地址
实用代码-C#之IP地址和整数的互转
源码 1 [StructLayout(LayoutKind.Explicit)] 2 public struct IP 3 { 4 public IP(UInt32 value) 5 { 6 this._text1 = 0; 7 this._text2 = 0; 8 this._text3 = 0; 9 this._text4 = 0; 10 this._value = value; 11
blackheart
2018/01/19
1.4K0
C# dotnet 获取整个局域网的 ip 地址
局域网可以使用的 IP 地址有很多,我写了一段代码用来枚举所有可以用的 ip 地址
林德熙
2022/08/04
1.1K0
IP地址与MAC地址
引言(有基础的同学可以不看):在复杂的网络通信中,有茫茫多的数据在中传输,它们是如何在相隔一步一步寻找到对方的呢?
比特大冒险
2023/10/17
7380
IP地址与MAC地址
ip地址查询
<?php Class IPQuery{ private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php';
joshua317
2018/04/16
7.7K0
IP地址常识
   公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
党志强
2020/02/02
3.3K0
IP地址分类
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。
用户7657330
2020/08/14
4.1K0
固定ip地址
在把皕杰报表部署到LINUX上时,我们有的时候需要自动获取ip来实现连接,但平时我们为了方便,可以把我们的ip改为固定的ip,这样访问的时候也会方便许多。
用户10133222
2022/11/09
4.5K0
​1行Python代码,获取对方的IP地址
上次我们讲过使用腾讯云DNS解析 + Github Pages,免费搭建个人网站 (给小白的保姆级教程),有一些进阶的小伙伴可能有自己的云服务器,想把域名绑定到云服务器上。
程序员晚枫
2022/06/14
1K0
​1行Python代码,获取对方的IP地址
IP地址简单介绍+查看本机IP地址-命令
IP地址:网络中设备的唯一标识 IP地址分为两大类 IPv4 给每一个连接在网络上的主机分配一个32bit(4个字节)地址 按照TCP/IP规定,IP地址用二进制来表示的,每一个IP地址长32bit(4个字节),但这样处理起来费劲,所以为了方便经常写成十进制的形式,中间使用 “·” 分隔不同的字节 这种表示法叫做:“点分十进制表示法” IPv6 由于互联网的蓬勃发展,IP地址需求量越来越大,但我们知道网络地址资源是有限的,这样使得IP的分配越来越紧张 为了扩大地址,通过IPv6重新定义地址空间,它采用的是1
用户9006224
2022/12/21
10K0
IP地址简单介绍+查看本机IP地址-命令
IP地址封装
 Java中的封装类 InetAddress,该类没有公有构造方法,调用该类必须调用它本身的静态方法。
用户2965768
2019/03/20
2.4K0
Ip地址归属地_电脑ip地址归属地查询
最近各大社交平台都悄悄上线了一个新功能,就是显示用户的IP归属地,境内精确到省级,境外精确到国家或地区。在个人信息和每条评论上面都有,也是炸出来了一波xx在xx国的账号,各大号主纷纷出视频解释自己的ip归属为什么在国内,有说用代理的,有说给家人登录的,也有说在国内有工作室(团队)的……
全栈程序员站长
2022/09/27
5K0
Ip地址归属地_电脑ip地址归属地查询
IP地址类别
一般将IP地址按计算机所在网络规模的大小分为A、B、C三类及特殊地址D、E(默认规模是根据IP地址中的第一个字段确定的)
用户7162790
2022/03/23
1.5K0
IP地址类别
ip地址判断
题目描述 输入一个ip地址串,判断是否合法。 输入描述: 输入的第一行包括一个整数n(1<=n<=500),代表下面会出现的IP地址的个数。 接下来的n行每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。 输出描述: 可能有多组测试数据,对于每组数据,如果IP地址合法则输出"Yes!”,否则输出"No!”。 合法的IP地址为: a、b、c、d都是0-255的整数。 输入例子: 2 255.255.255.255 512.12.2.3 输出例子: Yes! No!
张俊怡
2018/04/24
3.3K0

相似问题

.rdlc和PDF -字体水平重叠/打印时无法正确呈现

19

佐治亚字体在Windows上无法正确呈现

21

TrueType字体无法从SSRS正确呈现为pdf

11

Typekit字体Raleway无法在Windows上正确呈现

13

R无法在PDF文件中呈现小字体

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档