Rails: захватить идентификатор модели в форме создания для другой модели - PullRequest
2 голосов
/ 28 марта 2011

В настоящее время у меня есть три модели, и я пытаюсь ввести ссылку на одну из моделей (webpage.id) в другую модель (Micropost) - вот такая ситуация:

class Member < ActiveRecord::Base
  has_many :microposts
end

class Webpage < ActiveRecord::Base
  has_many :microposts, :dependent => :destroy
end

class Micropost < ActiveRecord::Base
  belongs_to :member
  belongs_to :webpage
end

Кто яПопытка сделать это - создать Micropost из веб-страницы методом ': show'.

Вот контроллер Micropost:

class MicropostsController < ApplicationController
  def create
    @micropost  = current_member.microposts.build(params[:micropost])
    @webpage = Webpage.find(params['webpage_id'])
    @micropost.webpage = @webpage
    if @micropost.save
      flash[:success] = "Micropost created!"
      redirect_to root_path
    else
      @feed_items = []
      render 'pages/home'
    end
  end
end

и из представления "show" веб-страницы:

<table class="front" summary="For signed-in members">
    <tr>
      <td class="main">
        <h1 class="micropost">What's up?</h1>
        <%= form_for @micropost do |f| %>
          <%= render 'shared/error_messages', :object => f.object %>
          <div class="field">
            <%= f.text_area :content %>
            <input type="hidden" id="webpage_id" name="micropost[webpage_id]" value="<%= @webpage.id %>"/>
          </div>
          <div class="actions">
            <%= f.submit "Submit" %>
          </div>
        <% end %>
      </td>
    </tr>
</table>

Когда я сохраняю форму, я получаю сообщение об ошибке:

«Не удалось найти веб-страницу без идентификатора»

Когда я удаляю ссылку на веб-страницу из формы, форма успешно сохраняет и устанавливает поле user_id - так что это работает нормально (но очевидно, что в этом случае webpage_id имеет значение NULL).

Есть мысли о том, где я иду не так?

Cheers

Дамо

1 Ответ

0 голосов
/ 12 августа 2011

Дамп параметров, чтобы убедиться, что webpage_id действительно передается.

На ваш взгляд добавьте:

<%= debug params %>
...