在模型中呈现表单:未定义的方法`host_with_port'表示nil:NilClass

时间:2012-05-20 14:50:51

标签: ruby-on-rails rails-activerecord

我正在渲染部分包含模型中的表单。 好吧,这可能不是最明显的事情,但仍然是:这就是我正在尝试的。

理由:

让我首先激励我为什么这样做(如果你有其他方式的建议,请随意):

我正在为我的应用程序的用户构建一个简单的消息传递功能,以便当他们需要执行操作时,会通过消息通知他们,并且消息包含数据和要执行的操作。

示例:用户正在接收加入特定组的邀请。邀请包含组所有者的名称,组的名称以及接受或忽略邀请的两个按钮。

代码:

以下是消息模型:

class Message < ActiveRecord::Base

  def self.group_invitation(group, user)
    @m=Message.new({
                     :status => :unread,
                     :from_user_id => group.owner.id,
                     :to_user_id => user.id,
                     :type => :group_invitation,
                     :title => "Invitation to the group: #{group.name}.",
                     :message => ActionController::Base.new.send(:render_to_string,
                                :partial => 'messages/group_invitation',
                                            :locals => {:group => group,
                                                        :user => user}
                                                                 )
                  })
    @m.save!
  end
end

以下是我在模型中呈现的部分内容(即'messages / group_invitation'):

<div>
  <h1> Invitation to <%= group.name %> </h1>
  <p>
    Hello <%= user.name %>,
  </p>
  <p>
    You have been invited by <%= group.owner.name %> to join the group
    <%= group.name %>.
  </p>
</div>

<div>
Please take one of the following action:
<br/>
     <%=  m= group.memberships.find_by_user_id(user.id)
       m.status = :validated
       render 'memberships/form', :membership => m, :method =>
       :put, :label => "Accept" %>
<br/>
    <%= render 'memberships/form', :membership => m, :method =>
      :delete, :label => "Ignore" %>
</div>

其中'membership /表'部分为:

<%= form_for membership, :html => {:method => method} do |f| %>
 <%= f.hidden_field :group_id %>
 <%= f.hidden_field :user_id %>
 <%= f.hidden_field :status %>
 <%= f.submit :value => label %>
<% end %>

用户拥有在以“邀请”状态发送邀请时创建的群组的成员资格。用户将收到一条内部消息,其中包含将成员资格更新为“已验证”状态的功能。

如果没有正确生成邀请,但是使用表单,我会在'membership /表'部分的第一行出现以下错误:

undefined method `host_with_port' for nil:NilClass

我假设我必须在某处包含/要求urlherlpers的定义,以便渲染产生正确的路径等。但我这样做的尝试并没有取得任何成功。

所以,如果有一个聪明的家伙看着它,可能他会非常友好地给我一些想法来解决这个问题。

非常感谢期待

0 个答案:

没有答案