新手问题 大神指点一下 ,@post 和 :post 区别

jkxruby · 2017年09月27日 · 最后由 msg7086 回复于 2017年09月30日 · 2151 次阅读

<%= form_for :post, posts_path do |f| %>
<%= form_for @post do |f| %> 如上这 2 段代码效果是一样的,我不理解的是:post,这个 号是什么意思?为什么 @post 与:post一样效果呢?
<%= f.input :title, input_html: {class:"form-control"} %>这段代码里 :title:是什么意思? 哪个大神解释一下,谢谢~

:post 这是 Ruby 的语法啊。。。Symbol 啊这是。。。写 Rails 前先简单过遍 Ruby 语法

我是来看大神回答问题的。。

建议了解了基础的@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试试,直接会失败

楼上的大神并不是脾气不好没耐心。这问题都在论坛上问,那更复杂点的问题可咋办。痛心疾首啊

jasl 回复

:和 @ 不可能一样吧。麻烦详解一下,谢谢🙏

jkxruby 回复

当然不一样。。。@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

谢谢各位,我现在就去学习一下基础

jasl 回复

谢谢提醒,我去补基础知识,很多都不懂

Awlter1 回复

我是零基础新手,好多不懂,谢谢你们解答,给我当头一棒,我得赶紧去看基础知识了。

此 post 非彼 post

@post,:post 是不同的方法参数,效果一样是因为在 方法 form_for 对这两个不同的输入做了一样的输出

明明后面还跟了个posts_path你怎么能说他们效果一样呢。

jkxruby 关闭了讨论。 09月30日 08:38
需要 登录 后方可回复, 如果你还没有账号请 注册新账号