【发布时间】:2013-12-10 16:57:17
【问题描述】:
我是新手。我已阅读 API 文档。但是还是不明白 form_for 是怎么工作的。
首先,来自 Ruby on Rails 教程,关注按钮的表单:
<%= form_for(current_user.relationships.build(followed_id: @user.id)) do |f| %>
<div><%= f.hidden_field :followed_id %></div>
<%= f.submit "Follow", class: "btn btn-large btn-primary" %>
<% end %>
我理解current_user.relationships.build(followed_id: @user.id) 表示新记录。但是为什么我们不能只提交和触发控制器来保存没有hidden_field的记录呢?为什么我们还需要将followed_id 发布到控制器?
其次,在 hidden_field 中,:followed_id 是什么意思?我相信这是一个符号,即它仅等于“followed_id”而不是 id 的变量。如果这只是输入字段的名称,那么它的值是多少?
第三,form_for 怎么知道提交应该发到哪里? form_for 将发布到哪个控制器和操作?
第四,params 如何与form_for 一起工作?在这种跟随按钮的情况下,params[:relationship][:followed_id] 将在控制器中返回@user.id。它怎么知道第一个哈希属性是:relationship?我们既没有提到form_for :relationship,也没有提到form_for @relationship。
我知道这些问题可能很愚蠢,但我真的被困住了。任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails rails-activerecord params form-for form-helpers