Ruby on rails 为什么会出现500错误,但无法理解原因,因为路由和控制器存在于rails中

Ruby on rails 为什么会出现500错误,但无法理解原因,因为路由和控制器存在于rails中,ruby-on-rails,Ruby On Rails,这是我的路线: map.skip_contact_postalcard 'contacts/:contact_id/postalcards/:postalcard_id/skip', :controller => 'contact_postalcards', :action => 'skip' 这是我的ContactPostalcardsController控制器: def skip @contact_postalcar

这是我的路线:

map.skip_contact_postalcard 'contacts/:contact_id/postalcards/:postalcard_id/skip', 
                      :controller => 'contact_postalcards', :action => 'skip' 
这是我的ContactPostalcardsController控制器:

  def skip

    @contact_postalcard = ContactPostalcard.new(params[:contact_postalcard])
    @contact_postalcard.contact_id = params[:contact_id]
    @contact_postalcard.postalcard_id = params[:postalcard_id]

    @contact_postalcard.status = "skipped"
    @contact_postalcard.date_sent = Date.today
    @contact_postalcard.date_created = Date.today

    if @contact_postalcard.save
      render :text => 'This email was skipped!'

    end
  end 
protect_from_forgery :except => :skip

我调用它的方式是通过Rails中的远程链接,但即使我直接访问它,我仍然会遇到问题

看起来您缺少了一条斜线。试试这个:

map.skip_contact_postalcard '/contacts/:contact_id/postalcards/:postalcard_id/skip', 
                  :controller => 'contact_postalcards', :action => 'skip'

另外,在命令行中运行“rake routes”,以确保您的路由确实正确注册。

我认为500错误原因远程链接方法,我读取了您的代码,您请求post。您尝试向控制器添加fllow代码:

  def skip

    @contact_postalcard = ContactPostalcard.new(params[:contact_postalcard])
    @contact_postalcard.contact_id = params[:contact_id]
    @contact_postalcard.postalcard_id = params[:postalcard_id]

    @contact_postalcard.status = "skipped"
    @contact_postalcard.date_sent = Date.today
    @contact_postalcard.date_created = Date.today

    if @contact_postalcard.save
      render :text => 'This email was skipped!'

    end
  end 
protect_from_forgery :except => :skip

您使用的是什么版本的rails?请注意,随着迁移到3.0,路由api发生了很大的变化。另外,你可以发布用来测试这个的链接吗?我正在使用2.3.5。。。示例链接为domain.com/contacts/15/postalcards/2/skip