Я думаю, что я использую неправильный подход к этому и пытался найти лучший подход в Интернете, но пока не повезло.
У меня есть модель проектов, в которой много сообщений и пользователей.Сообщения принадлежат как проектам, так и пользователям (как показано ниже).Поэтому мне нужно передать как идентификатор проекта, так и идентификатор пользователя в форму сообщения.Я знаю, что это должно быть довольно просто, но я, очевидно, все испортил.Не уверен, что на данном этапе использование http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-hidden_field_tag обязательно является лучшей идеей.
Любая помощь будет отличной.
Модель проекта:
class Project < ActiveRecord::Base
belongs_to :user
has_many :users
has_many :messages, :dependent => :destroy
end
Модель пользователя:
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :first_name, :last_name, :username, :email, :password, :password_confirmation
has_many :projects
belongs_to :projects
has_many :messages
end
Модель сообщения:
class Message < ActiveRecord::Base
attr_accessible :title, :message
belongs_to :project
validates :title, :presence => true
validates :message, :presence => true
end
Показ проектов:
def show
@project = Project.find(params[:id])
@title = @project.title
@curent_user = current_user
@message = Message.new
begin
@messages = @project.messages
rescue ActiveRecord::RecordNotFound
end
end
/ shared / _message.html.erb
<%= form_for @message do |f| %>
<%= f.label :title %>:
<%= f.text_field :title %><br>
<%= f.label :message %>
<%= f.text_area :message %>
<%= f.submit %>
<% end %>
Действие создания сообщения
def create
@message = @project.messages.build(params[:message])
if @message.save
flash[:success] = "Message created!"
redirect_to root_path
else
render 'pages/home'
end
end
Оцените ваше время, просто пытаясь определить, как я передаю user_id / project_id виз поля, поэтому оно передается при создании сообщения.