解决铁路应用的最佳步骤

时间:2013-06-22 21:02:19

标签: ruby-on-rails-3

走过MVC并检查一切是否设置正确的最佳(最简单)方法是什么?

我有点疲惫,我觉得必须有一个真的简单修复错误消息,如:

undefined method `invitations_path' for #<#<Class:0x00000105ad5cb8>:0x00000105820b30>

在我的应用程序中添加少量代码后,事情就会中断,我想自己麻烦地拍摄它们。

感谢您的提示!

修改

对特定问题进行故障排除可能会导致采用通用方法,

  • Link_to未链接已使用&lt;%=%&gt;而不是&lt; %%&gt;。
  • 访问localhost:3000 / invitation / new
  • 时会产生上述错误

查看(在home / index.erb.html中)

<% if @user.invitation_limit > 0 %>
        <% link_to 'Send Invitations', new_invitation_path %> 
        (<%= @user.invitation_limit %> left)
<% end %>

查看(在邀请函/ new.erb.html中)

<%= error_messages_for :invitation %>
<% form_for @invitation do |f| %>
  <p>
    <%= f.label :recipient_email, "Friend's email address" %><br />
    <%= f.text_field :recipient_email %>
  </p>
  <p><%= f.submit "Invite!" %></p>
<% end %>

控制器

class InvitationController < ApplicationController
  def new
    @invitation = Invitation.new
  end

def create
    @invitation = Invitation.new(params[:invitation])
    @invitation.sender = current_user
    if @invitation.save
      if logged_in?
        Mailer.deliver_invitation(@invitation, signup_url(@invitation.token))
        flash[:notice] = "Thank you, invitation sent."
        redirect_to projects_url
      else
        flash[:notice] = "Thank you, we will notify when we are ready."
        redirect_to root_url
      end
    else
      render :action => 'new'
    end
  end
end

模型

class Invitation < ActiveRecord::Base
  belongs_to :sender, :class_name => 'User'
  has_one :recipient, :class_name => 'User'

  attr_accessible :recipient_email, :sender_id, :sent_at, :token
end

的routes.rb

resources :home, :only => :index
resources :invitation

1 个答案:

答案 0 :(得分:0)

您可以为每个控制器操作创建请求规范。请求规范一直遵循从控制器到渲染视图的请求,如果有错误,它将显示在请求规范中。

这可能需要一段时间才能设置,但将来会为您节省大量时间,因为当您想要推出新版本的网站时,您不必手动测试每个页面。