<%= form_for :post, posts_path do |f| %>
<%= form_for @post do |f| %>
如上这 2 段代码效果是一样的,我不理解的是:post
,这个 :
号是什么意思?为什么 @pos
t 与:post
一样效果呢?
<%= f.input :title, input_html: {class:"form-control"} %>
这段代码里 :title
,:
是什么意思?
哪个大神解释一下,谢谢~
建议了解了基础的@post
和:post
的区别之后,看一下form_for
的 api
要是不想看 API 可以看看这个 https://stackoverflow.com/questions/32515729/ror-form-for-symbol-vs-object-do-the-odd-way
简单的说,效果并不一样。传入 symbol,生成的 form 的 action 只是当前页面的 url(如果你没传入的话), 而且也不会自动在 form 上附上相应的 style 和 id。 基本上你就算不传入:post, 换成:po, :anything,form 都能生成,但是有些东西变了,你可以自己对比。你再换换@post -> @po, @anything试试,直接会失败
楼上的大神并不是脾气不好没耐心。这问题都在论坛上问,那更复杂点的问题可咋办。痛心疾首啊
当然不一样。。。@post
是实例变量,:post
是个 symbol,你先给 @post
里的字段赋点值,然后再看表单就知道差别了。
但无论怎样,实例变量和符号是 Ruby 最最基础的东西,不应该拿出来问的
这种标题太容易给人造成一种“只有大神才有资格回答问题”的错觉。然而实际上问出来的问题水平实在太低,根本不需要大神来回答。
关于 :
语法的问题,论坛第一页就有入门级的资料可以看:https://ruby-china.org/topics/34066
form_for 的用法在 Rails API 文档里查:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for