复制Twitters样式 - 在同一页面上集成索引和创建表单

时间:2011-07-28 03:30:20

标签: ruby-on-rails ruby haml

我想基本上做Twitter的流做 - 在同一页面上有创建动作和索引动作,但我现在从表单中得到一个错误,NilClass。

这是我的观点,然后是我的代码

class MistakesController < ApplicationController

  respond_to :html, :xml, :json

  before_filter :authenticate_user!

  def index
    @mistakes = Mistake.all
    @user = current_user

    respond_to do |t|
      t.html
    end
  end

  def create

    @mistake = Mistake.new(params[:mistake])
    @mistake.user = current_user

    respond_to do |f|
      if @mistake.save
        f.html { redirect_to("/", :notice => 'cool') }
      else
        f.html { render :action => 'new' }
      end
    end
  end

  def new
    @new_mistake = Mistake.new
  end

  def show
    @mistake = Mistake.find(params[:id])
  end

end

和index.html.haml

%p test
%p= @user.email
= link_to "Create", new_mistake_path
- semantic_form_for @mistake do |form|
  = form.inputs :name => "Basic" do
    = form.input :message
    = form.input :notes
  = form.inputs :name => "Topics" do
    = form.input
  = form.buttons do
    = form.commit_button

我开始经历越来越多的创建非平凡的rails应用程序的痛苦,所以任何帮助都会很棒。

由于

编辑:

错误信息

消息

undefined method `model_name' for NilClass:Class

当我查看index.html.haml。

时发生

2 个答案:

答案 0 :(得分:2)

尝试将此添加到控制器的索引操作

@mistake = Mistake.new

除了你已经拥有的@mistakes变量之外,这是必需的......

答案 1 :(得分:0)

您可能根本不需要操作,因为该表单现在是索引页的一部分。我建议只是摆脱那个动作并改为创建重定向到索引。

这是对stephenmurdoch上述建议的补充。