总结一下form_for的一些用法

form_for 的基本用法

<%= form_for @article do |f|%>
    

<%= f.label :title %>

<%= f.text_field :title %>

<%= f.label :content %>

<%= f.text_area :content %>

<%= f.submit %>

<% end %>

生成的html代码

这里的@article是一个model对象

<%= f.label :title %>

<%= f.text_field :title %>

生成的表单是

后面的字段就是数据库中的字段互相对应,参数可以在params[:article][:title]拿到

可以看到还有两个隐藏的input标签,这段代码不会在浏览器中显示,只在 Rails 内部有用,所以你并不需要知道它的作用。简单来说,这段代码首先使用 Unicode 字符 ✓(对号 ✓)强制浏览器使用正确的字符编码提交数据,然后是一个“真伪令牌”(authenticity token),Rails 用它抵御“跨站请求伪造”(Cross-Site Request Forgery,简称 CSRF)攻击。


<%= form_for(@article, as: :client) do |f| %>
  ...
<% end %>

此时params中取值不会在params[:article]中取而是在params[:client]中取相当于给了一个别名。


<%= form_for @post, as: :post, url: posts_path, html: { class: "new_post", id: "new_post" } do |f| %>
  ...
<% end %>

在html参数中可以定义很多自定义的属性"data":"xxxx"非常方便。


<%= form_for @post, remote: true do|f| %> #使用剥离式js异步提交
= form_for( @post, html: { class: "form" }) do |f|
  ......
  = f.select  :tag_list, @tags.collect { |t| [t.name,t.name] }, {}, { :multiple => "multiple" }
  ......

你可能感兴趣的:(总结一下form_for的一些用法)