【问题标题】:HAML and mistake in form_forHAML 和 form_for 中的错误
【发布时间】:2012-11-04 20:50:36
【问题描述】:

我正在学习 HAML,但我对 from_for 有疑问

%b New Advert!

- form_for @car, :url => { :action => "create" } do |f|
  = f.text_field :body 
  = f.submit t('advert.form.save')

我的控制器 advert_controller

class AdvertController < ApplicationController
  def new
    @car = Car.new
  end

  def create
    @car = Car.new(params[:car])
  end
end

还有我的模型 car.rb

class Car < ActiveRecord::Base
  attr_accessible :title, :body
end

但我有一个错误:

用于#的未定义方法“body”

广告中的 NoMethodError#new

显示第 4 行出现的 /my_project/app/views/advert/new.html.haml

UPD 带有 '=' 的 form_for 不起作用

= form_for @car, :url => { :action => "create" } do |f|
      = f.text_field :body 
      = f.submit t('advert.form.save')

【问题讨论】:

    标签: ruby-on-rails haml


    【解决方案1】:

    我可以在这里看到两个错误: 首先你应该使用= 而不是- 来代替form_form,实际上= 会输出结果,而- 不会。

    由于form_for 为表单返回 HTML,您希望将其写在页面上;)

    至于你的错误原因,我不完全确定,但似乎你的Car 模型没有body 字段,所以它没有body 方法

    【讨论】:

    • 我的汽车模型有一个 body 字段
    • 你确定你运行迁移了吗?因为在 attr_accessible 中有一个主体是不够的,所以你的 carstable 需要有一个 body
    • 其实attr_accesible如果数据库表是正确的则根本不需要
    • @froderik 我不知道你在说什么,但是你说的只是错误的,attr_accessible 和表结构无关,是关于批量赋值的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多