表格中的其他变量

表格中的其他变量

我认为我对此采取了错误的方法,并尝试在网络上找到最佳方法,但到目前为止还没有运气。

我有一个项目模型,其中包含许多消息和用户。消息属于项目和用户(如下所示)。因此,我需要将项目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转移到发件人字段中,以便在创建消息时将其传递。

最佳答案

在 Controller 中设置project_id / user_id,以便最终用户在提交表单时无法对其进行修改。

在消息 Controller create操作中使用@ project.messages.build时,应自动设置project_id。
然后可以使用@ message.user = @current_user设置用户

关于ruby-on-rails - 表格中的其他变量-Rails,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8461835/

10-09 04:53