Ruby on rails 未定义的方法'jobs';零级:零级
我是RubyonRails的初学者,遇到了一个我似乎不理解的错误 在商人的个人资料页面下,我尝试调用该行业下的所有行业和所有列出的工作。贸易有很多工作&工作有很多行业 TrademanprofilesController: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
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 %>