我认为我对此采取了错误的方法,并试图在网上找到最好的方法,但到目前为止还没有运气。
我有一个项目模型,它有很多消息和用户。消息属于项目和用户(如下所示)。所以我需要将项目ID和用户ID传递到消息表单中。我知道这应该是非常简单的,但我明显搞砸了。在这个阶段不确定使用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传输到from字段,以便在创建消息时传入。
答案 0 :(得分:1)
在控制器中设置project_id / user_id,以便最终用户在提交表单时无法修改它们。
当您在消息控制器创建操作中使用@ project.messages.build时,应自动设置project_id。 然后,您可以使用@ message.user = @current_user
设置用户