Как создать новый объект в Rails с предопределенным свойством - PullRequest
0 голосов
/ 02 марта 2011

У меня есть приложение Rails, которое имеет несколько страниц, каждая страница имеет много конвоев.На каждой странице есть ссылка для создания нового convo на этой странице.Это код для этой ссылки:

<% = link_to 'New Convo', new_convo_path (: page => @ page)%>

Однако на следующей странице "convo /new »свойство страницы пусто.Чего мне не хватает?

РЕДАКТИРОВАТЬ, вот мои новые и функции создания для конвоев

   def new
    @convo = Convo.new(params[:page])

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @convo }
    end
  end



  # POST /convos
  # POST /convos.xml
  def create
    @convo = Convo.new(params[:convo])

    respond_to do |format|
      if @convo.save
        format.html { redirect_to(@convo, :notice => 'Convo was successfully created.') }
        format.xml  { render :xml => @convo, :status => :created, :location => @convo }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @convo.errors, :status => :unprocessable_entity }
      end
    end
  end

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

Я предполагаю, что вам не хватает ": page =>"

def new
  @convo = Convo.new(:page=>params[:page])

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @convo }
  end
end
2 голосов
/ 02 марта 2011

Вам нужно загрузить страницу ... попробуйте установить фильтр перед ...

before_filter :find_page

private
  def find_page
    @page = Page.find(params[:page_id])
  end

Затем вы строите, используя вложенные ресурсы

def new
  @convo = @page.convos.build

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @convo }
  end
end

def create
  @convo = @page.convos.build(params[:convo])
  .....
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...