Ruby on rails 未定义的方法'jobs';零级:零级

Ruby on rails 未定义的方法'jobs';零级:零级,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是RubyonRails的初学者,遇到了一个我似乎不理解的错误 在商人的个人资料页面下,我尝试调用该行业下的所有行业和所有列出的工作。贸易有很多工作&工作有很多行业 TrademanprofilesController: class TrademanprofilesController < ApplicationController def show @user = current_user end def jobleads end def

我是RubyonRails的初学者,遇到了一个我似乎不理解的错误

在商人的个人资料页面下,我尝试调用该行业下的所有行业和所有列出的工作。贸易有很多工作&工作有很多行业

TrademanprofilesController:

class TrademanprofilesController < ApplicationController

  def show
    @user = current_user   
  end

  def jobleads   
  end

  def purchased   
  end

  def memberBenifits   
  end

  def account   
  end

  def editjoblead
    @trades = Trade.order(:name)
    @jobs = Job.all

    if params[:search].present?
      @applications = Application.near(params[:search], 100, order: 'distance')
      @hash = Gmaps4rails.build_markers(@applications) do |application, marker|
        marker.lat application.latitude
        marker.lng application.longitude
        marker.infowindow application.location
        marker.infowindow application.trade.name
      end
    else
      @applications = Application.all
    end
    @applications_trades = @applications.group_by { |t| t.trade_id }   end end

我想显示商品名和工作名(而不是ID)。非常感谢,如果这是一个简单的问题,我真的很抱歉。

你的routes.rb文件呢?我想错误可能在那里,像这样放在你的路由文件里

resources :trades do
   resources :applications
   resources :jobs 
end

如果你看看你的方法

def editjoblead
  @trades = Trade.order(:name) #this will return a collection of trades to you
  @jobs = Job.all
  #other logic
end
在你看来,你有这个

<ul>
  <% @trade.jobs.each do |job| %></ul>
  <li><%= job.name %></li>
  <% end %>

尝试此
谢谢@Pavan,不幸的是,它仍然声明了相同的错误:Trademanprofiles中的NoMethodError\editjoblead/undefined方法“job”for,并突出显示一行:谢谢@Pavan,但仍然存在相同的错误:Trademanprofiles#editjoblead/未定义的#方法'jobs'中的NoMethodError。这完全不相关
NoMethodError in Trademanprofiles#editjoblead
undefined method `jobs' for nil:NilClass
and highlights this line: 
<ul><% @trade.jobs.each do |job| %></ul>
<li><%= job.name %></li>
<% end %>
<% @trades.each do |trade| %>
<%= trade.name %>
<%= trade.jobs %>
<% end %>
i got this displayed:
#<Job::ActiveRecord_Associations_CollectionProxy:0x00000106b0f1d8>
<% @trades.each do |trade| %>
<%= trade.name %>
<%= trade.job_ids %>
<% end %>
but it only returned the id numbers of the jobs under the trade Aerial / Network 
Aerial / Network Specialist
[978, 979, 980, 1039, 1040, 1041]
Rails.application.routes.draw do

  resources :images

  devise_for :users
  resources :jobstartdates

  resources :budgets

  resources :applications do
    collection do
      get :search
      get :search_result
      get :business_details
    end
  end

  get 'home/index'

  resources :trades

  resources :jobs

  root to: 'home#index', as: 'home'

  resource :trademanprofiles do
    get :show
    get :jobleads
    get :purchased
    get :memberBenifits
    get :account
    get :editjoblead
  end

  resources :employeenumbers

  resources :businesstypes

  resources :trademanroles

  resources :titles

  resources :adverts

  resources :distances
resources :trades do
   resources :applications
   resources :jobs 
end
def editjoblead
  @trades = Trade.order(:name) #this will return a collection of trades to you
  @jobs = Job.all
  #other logic
end
<ul>
  <% @trade.jobs.each do |job| %></ul>
  <li><%= job.name %></li>
  <% end %>
<% @trades.each do |trade| %>
  // this will give a single trade present in @trades
  <tr>
    <td>
        <%= trade.name %></br>
        <ul>
          <% trade.jobs.each do |job| %>
            // this will give a job associated with your trade, notice it's trade and not @trade
            <li><%= job.name %></li>
          <% end %>
        </ul>
    </td>
    <td><%= link_to 'Show', trade %></td>
  </tr>
<% end %>