使用' ancestry'更新rails中的属性宝石

时间:2015-01-05 11:34:31

标签: ruby-on-rails ruby gem

我在rails中使用祖先gem。当它被设置为模型时,它获取像parent,parent_id,children等属性。现在我有一个包含两个属性content和content_title的模型消息,我们可以设置parent_id但是问题是,当我尝试设置它们时,只有一个得到更新。这是我的代码。

“parent_id”正在“创建动作”中设置,其他两个属性也是如此。当我像这样更新它时,只有“parent_id”得到更新但是当我使用时

 #@page = Message.new(message_params)

另外两个属性content和content_title会更新,而parent_id也不会更新。

class MessagesController < ApplicationController
    layout false
  def index
     @messages = Message.all
  end

  def show
    @message_id = Message.find(params[:id])
  end

  def new
    @message = Message.new

  end

 def create
    @page = Message.new(:parent_id => params[:parent_id],:content_title => params[:content_title],:content => params[:content])
   #@page = Message.new(message_params)

     if @page.save
        flash[:notice] = "The Mesage was created succeffully"
       redirect_to(:action => 'index')
    else
      render('new')
  end
end


private
    def message_params
       params.require(:message).permit(:parent_id,:content_title,:content)
    end

end

这是发送数据的视图文件

<div class="Pages new">
   <h2> Create Pages</h2>
     <%= form_for(:message, :url => {:action => 'create',:parent_id => @message_id}) do |f| %>
     <table summary="Page form fields">
     <tr>
          <th>ParentID</th>
          <td><%= f.text_field(:id) %></th>
        </tr>
        <tr>
        <tr>
          <th>Content Title</th>
          <td><%= f.text_field(:content_title) %></th>
        </tr>
        <tr>
          <th>Content</th>
          <td><%= f.text_field(:content) %></th>
        </tr>
        </table>

        <div class="form-buttons">
          <%= submit_tag("Submit Form") %>
          </div>

          <% end %>
        </div> 

有没有办法同时设置它们。我做错了什么?

1 个答案:

答案 0 :(得分:1)

对于任何想知道答案是什么的人。

def create
    @page = Message.new(message_params)
    @page.parent_id = params[:parent_id]
   #@page = Message.new(message_params)

     if @page.save
        flash[:notice] = "The Mesage was created succeffully"
       redirect_to(:action => 'index')
    else
      render('new')
  end
end