【问题标题】:Basecamp HQ API and RailsBasecamp HQ API 和 Rails
【发布时间】:2013-12-21 02:18:21
【问题描述】:

所以我使用 Basecamp HQ (classic) API 和 Ruby Wrapper 来设置 Rails 应用程序,以批量添加和删除待办事项、里程碑和消息。

Right now, I have two controllers--projects and projectSummary (projects has_many projectsummaries, and a projectsummary belongs_to a project) and I want to make it so when a project ID is selected rails will take you to a page that shows the待办事项、里程碑和消息。

项目页面运行良好。我想加载的关于该项目的所有信息都被很好地总结了,但是,当我试图链接到另一个页面时,我一直没有成功。

我得到的错误是一个

NoMethodError in Projects#index
...
undefined method `project_projectsummary_link'

即使我的 rake 路由返回

                      Prefix Verb   URI Pattern                                             Controller#Action
project_projectsummary_index GET    /projects/:project_id/projectsummary(.:format)          projectsummary#index
                             POST   /projects/:project_id/projectsummary(.:format)          projectsummary#create
  new_project_projectsummary GET    /projects/:project_id/projectsummary/new(.:format)      projectsummary#new
 edit_project_projectsummary GET    /projects/:project_id/projectsummary/:id/edit(.:format) projectsummary#edit
      project_projectsummary GET    /projects/:project_id/projectsummary/:id(.:format)      projectsummary#show
                             PATCH  /projects/:project_id/projectsummary/:id(.:format)      projectsummary#update
                             PUT    /projects/:project_id/projectsummary/:id(.:format)      projectsummary#update
                             DELETE /projects/:project_id/projectsummary/:id(.:format)      projectsummary#destroy
                    projects GET    /projects(.:format)                                     projects#index
                             POST   /projects(.:format)                                     projects#create
                 new_project GET    /projects/new(.:format)                                 projects#new
                edit_project GET    /projects/:id/edit(.:format)                            projects#edit
                     project GET    /projects/:id(.:format)                                 projects#show
                             PATCH  /projects/:id(.:format)                                 projects#update
                             PUT    /projects/:id(.:format)                                 projects#update
                             DELETE /projects/:id(.:format)                                 projects#destroy

目前,这是我的index.html.erb 代码,我尝试在其中链接到一个页面以显示项目摘要。

   <% @project.each do |item| %>
   <tr>
     <td><%= item.name %></td>
     <td><%= link_to item.id, project_projectsummary_link(@project) %></td>
     <td><%= item.last_changed_on %></td>
     <td><%= item.created_on %></td>
     <td><%= item.status %></td>

任何想法我可以做些什么来让它工作?

谢谢!

编辑

改为&lt;%= link_to item.id, project_projectsummary_path(@project) %&gt;

现在它返回一个带有错误的 URL 生成错误

No route matches {:action=&gt;"show", :controller=&gt;"projectsummary", :project_id=&gt;#&lt;...

我的 Routes.rb 目前是

ApiTest::Application.routes.draw do
  resources :projects do
    resources :projectsummary
  end

编辑 2

控制器代码

class ProjectsController < ApplicationController
  before_action :set_project, only: [:show, :edit, :update, :destroy]
  before_filter :basecamp_connect
  helper_method :sort_column, :sort_direction

  def index
    @project = Basecamp::Project.find(:all)
  end


  def list
    @projects = @basecamp.projects.find(:all)
  end

  def show
  end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 api basecamp


    【解决方案1】:

    应该是

    <td><%= link_to item.id, project_projectsummary_path(:project_id => @project.id, :id => @project.projectsummary.id) %></td>
    

    注意它是path 而不是link

    我猜这个项目有_一个项目摘要。

    project_projectsummary GET    /projects/:project_id/projectsummary/:id(.:format)      projectsummary#show
    

    您必须提供project_idid 才能使路线正常运行

    【讨论】:

    • 所以现在我的页面上出现“未定义的方法 `id'”错误。不知道你有没有更多的想法,不过我也在帖子里贴了我的相关控制器代码。
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多