Я искал свою проблему высоко и низко здесь и не совсем нашел правильный ответ.Я думаю, что это может быть простой вопрос маршрутов.В моем приложении пользователь может создать проект и следить за «растениями» в своем проекте, прежде чем он будет официально зарегистрирован.Маршруты обновления и редактирования самого проекта работают нормально.Я получаю сообщение об ошибке «Не удалось найти проект без идентификатора» только после того, как я пытаюсь получить доступ к действию CREATE в моем контроллере «Prelationships», чтобы построить связь между «Project» и «Plants».Мой код ниже:
Мои маршруты.рб
resources :sessions, :only => [:new, :create, :destroy]
resources :microposts, :only => [:create, :destroy]
resources :relationships, :only => [:create, :destroy]
resources :prelationships, :only => [:create]
resources :plants
resources :projects do
member do
get :pfollowing, :pfollowers
end
end
Мой контроллер "Отношения"
class PrelationshipsController < ApplicationController
def create
@project = Project.find(params[:project_id])
@plant = Plant.find(params[:prelationship][:pfollowed_id])
@project.pfollow!(@plant)
respond_to do |format|
format.html { redirect_to @project }
format.js { redirect_to @project }
end
end
end
Моя модель "Отношения"
class Prelationship < ActiveRecord::Base
attr_accessible :pfollowed_id
belongs_to :pfollower, :class_name => "Project"
belongs_to :pfollowed, :class_name => "Plant"
validates :pfollower_id, :presence => true
validates :pfollowed_id, :presence => true
end
Моя модель "Projects"
class Project < ActiveRecord::Base
attr_accessible :title, :address, :latitude, :longitude, :state
belongs_to :user
has_many :prelationships, :foreign_key => "pfollower_id",
:dependent => :destroy
has_many :pfollowing, :through => :prelationships, :source => :pfollowed
def pfollowing?(pfollowed)
prelationships.find_by_pfollowed_id(pfollowed)
end
def pfollow!(pfollowed)
prelationships.create!(:pfollowed_id => pfollowed.id)
end
end
Моя модель "Plants"
class Plant < ActiveRecord::Base
has_many :prelationships, :foreign_key => "pfollowed_id",
:class_name => "Prelationship"
has_many :pfollowers, :through => :reverse_prelationships,
:source => :pfollower
end
Моя часть для построения отношений на странице @project 'show'
<%= form_for @project.prelationships.build(:pfollowed_id =>
@project_id) do |f| %>
<%= collection_select(:prelationship, :pfollower_id, Plant.all, :id, :name, options =
{:prompt => "Select your plants"}, :class => "listselect") %>
<div class="actions">
<%= f.submit "Pfollow" %>
</div>
<% end %>
Сообщение об ошибке «Не удалось найти проект без идентификатора» после нажатия кнопки «Отправить» на парциальном.
app/controllers/prelationships_controller.rb:4:in `create'
и Параметры:
{"utf8"=>"✓",
"authenticity_token"=>"NKqa1f0M2yPLQDHbRLnxl3SiwBeTus/1q1hpZjD7hgY=",
"prelationship"=>{"pfollower_id"=>"5"},"commit"=>"Pfollow"}
Если этопроблема маршрутов, я не могу найти правильный язык, чтобы исправить это.Я построил модель User с возможностью подписки на других пользователей, и у меня не было этих проблем, что наводит меня на мысль, что мне, возможно, придется создать сеанс для моего проекта?
Помогите этому новичку, пожалуйста!