0

Я пытаюсь использовать список клиентов, которые были созданы из моей модели клиента в моей новой модели под названием Джобс.Обновление существующей записи в моей базе данных не работает

В принципе. Пользователь должен иметь возможность просмотреть список заданий, которые в настоящее время назначены любому одному клиенту, а затем перейти к дополнительной информации.

я вставил новый столбец в моей базе данных рабочих мест под названием client_id и вставил следующий код в моем _form зрения, чтобы быть в состоянии увидеть выпадающий список всех клиентов

<%= f.label :client_id %><br /> 
<%= f.collection_select :client_id, @clients, :id, :name, :prompt => 
    "Select" %> 

Однако. Когда я попал в submit, он пытается отправить POST на jobs/new, который, согласно моему ресурсному маршруту. Не существует.

Я также вставлял некоторые данные в базу данных, и, несмотря на то, что это хорошо видно, когда я пытаюсь его отредактировать. При нажатии на сохранение ничего не будет сделано для записи.

Parameters: {"utf8"=>"✓", "authenticity_token"=>"0ZVYpM9vTgY+BI55Y9yJDwCJwrwSgGL9xjHq8dz5OBE=", "job"=>{"name"=>"Sample Monthly", "client_id"=>"2", "frequency"=>"Monthly", "owner"=>"Me"}, "commit"=>"Save Job", "id"=>"1"} 
    Job Load (0.3ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."id" = ? LIMIT 1 [["id", "1"]] 
    (0.1ms) begin transaction 
    (0.5ms) UPDATE "jobs" SET "name" = 'Sample Monthly', "frequency" = 'Monthly', "updated_at" = '2012-05-12 17:04:23.818967' WHERE "jobs"."id" = 1 
    (108.3ms) commit transaction 
Redirected to http://localhost:3000/jobs/1 

Вот мой контроллер ..

class JobsController < ApplicationController 
    before_filter :load_clients, :only => [ :new, :create, :edit ] 

    def index 
    @job = Job.find(:all) 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @job } 
    end 
    end 

    def new 
    @job = Job.new 
    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @Job } 
    end 
    end 

    def create 
    @job = Job.new(params[:job]) 

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

    def show 
    @job = Job.find(params[:id]) 

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

    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 

    private 
    def load_clients 
     @client = Client.find(:all) 
    end 
    end 

Я полагаю, чтобы получить эту работу сравнительно легко исправить, но это мое Форст Rails приложение, и я не уверен, с чего начать.

Редакция:

В соответствии с запросом. Вот моя работа:

<%= form_for(:job) do |f| %> 
    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :client_id %><br /> 
    <%= f.collection_select :client_id, @client, :id, :name, :prompt => 
    "Select" %> 
    </div> 
    <div class="field"> 
    <%= f.label :frequency %><br /> 
    <%= f.text_field :frequency %> 
    </div> 
    <div class="field"> 
    <%= f.label :owner %><br /> 
    <%= f.text_field :owner %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Edit2: Вот моя модель работы.

class Job < ActiveRecord::Base 
    belongs_to :clients 
end 
+0

нужна дополнительная информация о вашей форме – Suborx

+0

Добавил (а) мои работы _form в первое сообщение – Keva161

+0

Не могли бы вы также обновить свой вопрос с помощью исходного кода задания? Вы используете attr_accessible? – cutalion

ответ

1

Попробуйте заменить :job с @job в вашей форме.

А также похоже, что вам не хватает edit действий в вашем контроллере.

+0

Редактирование теперь работает нормально. Однако, когда я сейчас создаю новую работу. Все детали, такие как имя и т. Д., Сохраняют EXCEPT детали клиента, которые, хотя они и указывают. Выходят на экран успеха. – Keva161

+0

У вас неправильная ассоциация замените 'own_to: clients' с' own_to: client' – Suborx

+0

Выполнение проекта :-) Im теперь успешно создаёт задание, и клиент указан ... но похоже, что он выходит как хэш вместо текстовое значение. 'Работа успешно создана. Работа Имя: Еженедельный тест Клиент: ** # <Клиент: 0x000001018b08b0> ** Частота: Никогда Владелец: Me' – Keva161

Смежные вопросы