Ruby on rails 未设置URL缩写器随机id

Ruby on rails 未设置URL缩写器随机id,ruby-on-rails,Ruby On Rails,我是一个Rails新手,在尝试编写Rails shortener应用程序时遇到了问题 我正在Youtube上观看该应用程序的教程,网址为: 有人能帮我理解从新操作到创建的流程控制吗?我不理解新操作、将数据输入表单和创建操作是如何工作的 我在新动作中设置了一个绑定撬杆。当程序点击binding.pry时,这是存储在参数中的内容。在点击新动作时,原始id的表单中没有输入任何内容 17: def new 18: @url = Url.new 19: 20: le

我是一个Rails新手,在尝试编写Rails shortener应用程序时遇到了问题

我正在Youtube上观看该应用程序的教程,网址为:

有人能帮我理解从新操作到创建的流程控制吗?我不理解新操作、将数据输入表单和创建操作是如何工作的

我在新动作中设置了一个绑定撬杆。当程序点击binding.pry时,这是存储在参数中的内容。在点击新动作时,原始id的表单中没有输入任何内容

    17: def new
    18:   @url = Url.new
    19:
    20:   letters = [('a'..'z'), ('A'..'Z')].map { |l| l.to_a }.flatten
    21:   @url.random_id = (0...8).map { letters[rand(letters.length)] }.join
  => 22:   binding.pry
   23: end

[1] pry(#<UrlsController>)> @url.random_id
=> "ogEJCcHm"
[2] pry(#<UrlsController>)> @url.original
=> nil
[3] pry(#<UrlsController>)> params
 => {"action"=>"new", "controller"=>"urls"}
[4] pry(#<UrlsController>)>
我的新.html.erb文件中包含以下内容:

    <%= form_for @url do |f| %>
    <%= f.label :original %> : <%= f.text_field :original %>
    <p>
    <%= f.hidden_field :random_id, :value => @url_random_id %>
    </p>
    <p>
    <%= f.submit "Shorten my Url" %>
    </p>
    <% end %>

: 

@url\u随机\u id%>

提前感谢您在帮助我理解我做错了什么方面提供的任何帮助

如果您需要关于我尝试做什么的任何其他信息,请告诉我

更改为

<%= f.hidden_field :random_id, :value => @url.random_id %> # note the dot, to match what you set in the controller.

这非常有效。似乎无论表单中输入的URL长度如何,@random_id始终为8个字符。如果将算法设置为5个字符而不是8个字符,则缩短URL的长度将始终为5个字符而不是8个字符。对吗?谢谢你的及时回复。谢谢你的帮助!
    <%= form_for @url do |f| %>
    <%= f.label :original %> : <%= f.text_field :original %>
    <p>
    <%= f.hidden_field :random_id, :value => @url_random_id %>
    </p>
    <p>
    <%= f.submit "Shorten my Url" %>
    </p>
    <% end %>
<%= f.hidden_field :random_id, :value => @url.random_id %> # note the dot, to match what you set in the controller.
@url = Url.new(params[:url]) # contains params[:url][:random_id]