Копирование стиля твиттеров - интеграция индекса и создание формы на одной странице - PullRequest
2 голосов
/ 28 июля 2011

Я хотел бы в основном делать то, что делает поток Твиттера - иметь действие create и index, доступное на той же странице, но теперь я получаю сообщение об ошибке 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

Я начинаю переживать растущую боль от создания нетривиального приложения для рельсов, поэтому любая помощь будет отличной.

Спасибо

EDIT:

Информация об ошибке

Сообщение

undefined method `model_name' for NilClass:Class

Происходит при просмотре index.html.haml.

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Попробуйте добавить это к действию index вашего контроллера

@mistake = Mistake.new

Это требуется в дополнение к переменной @mistakes, которая у вас уже есть ...

0 голосов
/ 28 июля 2011

Вам может вообще не понадобиться действие new , так как эта форма теперь является частью вашей индексной страницы.Я бы порекомендовал просто избавиться от этого действия и вместо этого создать перенаправление в индекс.

Это в дополнение к предложению Стивенмурдока выше.

...