2013-02-07 49 views
5

मुझे अपने घोंसले संसाधनों को ठीक से बनाने और प्रदर्शित करने के लिए पिछले कुछ दिनों में समस्या आई है। स्टैक ओवरफ्लो पर बहुत सारे प्रश्न हैं और इस पर बहुत सारे ब्लॉग पोस्ट हैं, लेकिन वे सभी रेल या पुराने मुद्दे के पुराने संस्करण से निपटने लगते हैं। मैं उस बिंदु पर हूं जहां एक बार मैं अंततः कुछ ठीक करता हूं, एक और त्रुटि पॉप अप होती है। मैंने इसे एक बेवकूफ गलती या टाइपो को नोटिस करने के लिए अनुभवहीन होने के कारण मुझे कम कर दिया है।घुमावदार संसाधनों और मिलान नियंत्रक को रूट करना

मेरे पास एक जॉब्स मॉडल है जो एक स्थान मॉडल से संबंधित है। स्थल ठीक काम करता है और मैं भी अपने स्थान के नीचे अपने नेस्टेड जॉब्स इंडेक्स में जाने और नए और संपादन फॉर्म लाने में सक्षम होने के लिए भी प्राप्त कर चुका हूं, लेकिन 'शो' या नए नौकरी बनाने के लिए undefined method त्रुटि उत्पन्न हुई । बहुत सारी खोज के बाद मुझे एक ही समस्या के साथ बहुत कुछ मिला और उन्होंने अपने फिक्स को लागू करने का प्रयास किया, लेकिन अब मुझे रूटिंग त्रुटि मिल रही है।

मेरा अधिकांश भ्रमित @ @ से बाहर निकलने के समय से आता है, इसका उपयोग कब किया जाता है: इसके बजाय स्थल_आईडी: आईडी में पैरा, इत्यादि। प्रत्येक उदाहरण में मुझे लगता है कि एक अलग तरीका है और मैं ऐसा नहीं कर सकता उनमें से मेरे लिए काम करते हैं।

सही दिशा में कोई भी टक्कर बेहद सहायक होगी।

रूटिंग त्रुटि

No route matches {:action=>"show", :controller=>"jobs", :venue_id=>#<Venue id: 1, name: "Burger Chef", city: "Chicago", state: "Illinois", areacode: 60614, created_at: "2013-02-05 21:33:41", updated_at: "2013-02-06 23:01:05", avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_updated_at: nil>} 

routes.rb

Twist::Application.routes.draw do 


    resources :users 
    devise_for :users 

    resources :venues do 
    resources :jobs 
    end 

end 

jobs_controller.rb

class JobsController < ApplicationController 
    # GET /jobs 
    # GET /jobs.json 
    before_filter :get_venue 

    def get_venue 
    @venue = Venue.find(params[:venue_id]) 
    end 

    def index 
    @jobs = @venue.jobs 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @jobs } 
    end 
    end 

    # GET /jobs/1 
    # GET /jobs/1.json 
    def show 
    @job = @venue.job.find(params[:id]) 

    if params[:id] 
     @venue = Venue.where(:id => params[:id]).first 
     @jobs = @venue.job_url 
    else 
     @jobs = Jobs.all 
    end 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @job } 
    end 
    end 

    # GET /jobs/new 
    # GET /jobs/new.json 
    def new 
    @job = @venue.jobs.build 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @job } 
    end 
    end 

    # GET /jobs/1/edit 
    def edit 
    @job = @venue.job.find(params[:venue_id]) 


    end 

    # POST /jobs 
    # POST /jobs.json 
    def create 
    @job = @venue.jobs.new(params[:job]) 

    respond_to do |format| 
     if @job.save 


     format.html { redirect_to :action => :show, :id => @venue.id, 
         notice: 'Job was successfully created.' } 
     format.json { render json: [@venue, @job], 
          status: :created, 
          location: [@venue, @job] } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @job.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /jobs/1 
    # PUT /jobs/1.json 
    def update 
    @job = Job.find(params[:id]) 

    respond_to do |format| 
     if @job.update_attributes(params[:job]) 
     format.html { redirect_to @job, notice: 'Job was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @job.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /jobs/1 
    # DELETE /jobs/1.json 
    def destroy 
    @job = Job.find(params[:id]) 
    @job.destroy 

    respond_to do |format| 
     format.html { redirect_to jobs_url } 
     format.json { head :no_content } 
    end 
    end 
end 

venues_controller.rb

class VenuesController < ApplicationController 
    # GET /venues 
    # GET /venues.json 


    def index 
    @venues = Venue.all 

    if params[:name] 
     @user = User.where(:name => params[:name]).first 
     @venues = @user.venues 
    end 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @venues } 
    end 
    end 

    # GET /venues/1 
    # GET /venues/1.json 
    def show 
    @venue = Venue.find(params[:id]) 


    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @venue } 
    end 
    end 

    # GET /venues/new 
    # GET /venues/new.json 
    def new 
    @venue = Venue.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @venue } 
    end 
    end 

    # GET /venues/1/edit 
    def edit 
    @venue = Venue.find(params[:id]) 

    #if session[:user_id] != @venue.user_id 
    # flash[:notice] = "Sorry, you cannot edit this venue." 
    # redirect_to(venues_path) 
    # =>end 
    end 

    # POST /venues 
    # POST /venues.json 
    def create 
    @venue = Venue.new(params[:venue_id]) 


    respond_to do |format| 
     if @venue.save 
     format.html { redirect_to @venue, notice: 'Venue was successfully created.' } 
     format.json { render json: @venue, status: :created, location: @venue } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @venue.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /venues/1 
    # PUT /venues/1.json 
    def update 
    @venue = Venue.find(params[:id]) 

    respond_to do |format| 
     if @venue.update_attributes(params[:venue]) 
     format.html { redirect_to @venue, notice: 'Venue was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @venue.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /venues/1 
    # DELETE /venues/1.json 
    def destroy 
    @venue = Venue.find(params[:id]) 
    @venue.destroy 

    respond_to do |format| 
     format.html { redirect_to venues_url } 
     format.json { head :no_content } 
    end 
    end 
end 

job.rb

class Job < ActiveRecord::Base 
    attr_accessible :description, :name, :requirement, :venue_id 

    validates :name, :presence => true, :length => { :minimum => 3 } 

    belongs_to :venue 
end 

venue.rb

class Venue < ActiveRecord::Base 
    attr_accessible :areacode, :avatar, :city, :name, :state 


    has_many :jobs 

    has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" } 

end 

/jobs/show.html.erb

<p id="notice"><%= notice %></p> 


    <% @job = Job.find(param[:venue_id]) %> 

    <p> 
     <b>Name:</b> 
     <%= @job.name %> 
    </p> 

    <p> 
     <b>Company:</b> 
     <p><%= @venue.name %></p> 
     <p><%= link_to @job.venue.name, venue_path(@venue) %></p> 


    <p> 
     <b>Job:</b> 
     <%= @job.job_id %> 
    </p> 

    <p> 
     <b>Description:</b> 
     <%= @job.description %> 
    </p> 

    <p> 
     <b>Requirement:</b> 
     <%= @job.requirement %> 
    </p> 




    <%= link_to 'Edit', edit_venue_job_path(@venue, @job) %> | 
    <%= link_to 'Back', venue_jobs_path(@venue, @job) %> 

**/jobs/index.html.erb** 

<div class="usergrid"> 

    <% jobs = @venue.jobs %> 


    <% @venue.jobs.each do |job| %> 
<div class = "user venue"> 

    <p> 
     <h2><%= link_to job.name, venue_job_path(@venue) %></h2> 
     <%= link_to 'Edit', edit_venue_job_path(@venue, job) %><br/> 
     <%= link_to 'Delete', venue_jobs_path(@venue, @job), :confirm => 'Are you sure?', :method => :delete %> 
</div> 
<% end %> 
<div style="clear:both"></div> 
</div> 




<%= link_to 'New Job', new_venue_job_path(@venue) %> 

मुझे लगता है कि एहसास ...

  1. यह एक बहुत स्पष्ट ठीक हो सकता है, लेकिन रेल के लिए नया किया जा रहा है कि निश्चित रूप से अभी भी कुछ बुनियादी बातों है कि मैं पूरी तरह से समझ में नहीं आता है।
  2. यदि मैंने बहुत अधिक या बहुत कम कोड पोस्ट किया है तो कृपया मुझे बताएं, मुझे पूरा यकीन नहीं है कि इसके लिए कम से कम कितना आवश्यक है।
  3. एक से अधिक त्रुटि हो सकती है, वहां बहुत सारी त्रुटियां हो सकती हैं, और उनमें से कई मेरे द्वारा इसे ठीक करने की कोशिश कर रहे थे जब मैं वास्तव में नहीं जानता था कि मैं क्या कर रहा था। मैं इसे स्वयं ठीक करना चाहता था, लेकिन जब मैं वास्तव में इसे और भी खराब कर रहा हूं तो मैं इसके साथ गड़बड़ी को संभाल नहीं सकता।

मैं मार्गों के साथ खिलवाड़,, वास्तविक लिंक और मार्गों को बदलने के दायरे के साथ खिलवाड़ की कोशिश की है, और इन त्रुटियों कि मैं मिल सकता है और उनमें से कोई मदद करने के लिए लग रहा था के लिए आम सुधारों की के रूप में कई।

धन्यवाद!

+0

क्या आप अधिक स्टैकट्रैक शामिल कर सकते हैं? ऐसा लगता है कि आप अपने मॉडल के बजाय अपने मॉडल_आईडी के बजाय अपना मॉडल पास कर रहे हैं। – drewinglis

+0

@drewinglis यह कोई समस्या नहीं होनी चाहिए, जैसे कि अगर url_helper को किसी आईडी की अपेक्षा होने पर एक उदाहरण प्राप्त होता है, तो वह '# to_param' को कॉल करने का प्रयास करेगा जो डिफ़ॉल्ट रूप से एआर ऑब्जेक्ट्स आईडी – pjam

उत्तर

7

त्रुटि कह रहा है यह देखते हुए पैरामीटर के लिए कोई मार्ग है कि वहाँ:

{:action=>"show", :controller=>"jobs", :venue_id=> "an_id"} 

आप देख सकते हैं कि रेक मार्गों चल रहा है, और से आपको लगता है कि देखेंगे, jobs#show के रूप में नौकरियों स्थल के तहत नीडिंत है, नियंत्रक कार्यों को दो मानकों की आवश्यकता होती है: venue_id (जो नौकरी का 'अभिभावक' है) और id जो नौकरी आईडी है।

मैं जल्दी से अपने कोड की जाँच की, और मुझे लगता है कि चीजें हैं जो त्रुटि का कारण बनता है की एक के बाद एक इस लाइन है:

<h2><%= link_to job.name, venue_job_path(@venue) %></h2> 

इस

<h2><%= link_to job.name, venue_job_path(@venue, @job) %></h2> 

मूल रूप से आपको लगता है कि मिल जाएगा होना चाहिए जब भी आप स्थल प्रदान किए बिना नौकरी के लिए एक लिंक प्रस्तुत करने का प्रयास करेंगे, तो त्रुटि की तरह।

मुझे बताएं कि आपको अधिक जानकारी या अधिक जानकारी चाहिए या नहीं।

+0

देता है मेरी समस्या थोड़ा और समाप्त हो जाती है उस से घिरा हुआ क्योंकि मेरा कोड इतना गड़बड़ हो गया था, लेकिन आप निश्चित रूप से मुझे सही दिशा में ले गए, तो धन्यवाद! – Jason

+0

खुशी है कि यह आपकी मदद करता है भले ही यह सही जवाब नहीं था :) – pjam

+0

"place_job_path (@venue, @job)" के बारे में आपकी युक्ति ने मुझे अपने कोड के उस हिस्से को दोबारा सुधारने में मदद की। धन्यवाद! –