2012-07-02 2 views
0

Это вопрос без вопросов!ActiveModel vs ActionView in Rails

Как сохранить модель действий, один раз, когда я пытаюсь сохранить в контроллере, в Params [: действие] принимается контроллером действия ..

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

def viewTask() 
    @id = params[:id] 
    @task = Task.find(@id) 
    @status = Status.find(@task.status_id) 
    @actions = Action.where("task_id = #{@id}") 
    @action = Action.new 


    if params[:action] 
    @action = Action.new(:message => params[:action], :task_id => @id) 
    @action.save 
    end 
end 

Вот мое мнение:

<%= form_for :action do |a| %> 
    <%= a.text_area :message, :cols => 10, :rows => 5 %> 
    <%= a.submit 'ok', :class=> "btn" %> 
<% end %> 

Спасибо Всем.

+2

Извините, у меня возникли проблемы с пониманием: Как сохранить для модели Action, когда при попытке сохранить в контроллере параметры [: action] являются токенами контроллера действий. –

+0

Я не понимаю ваш вопрос , – iblue

+0

Как я могу сохранить для модели Action, один раз, когда я пытаюсь сохранить в контроллере, параметры [: action] уже являются токенами контроллера действий. –

ответ

0

Этот ответ больше похож на комментарий, но его так сложно понять, о чем идет речь, поэтому я решил получить это как ответ.


Давай, Фернандо, как мы можем узнать, что вы пытаетесь сделать? Каким действиям должна быть представлена ​​форма? Можете ли вы показать нам свои маршруты.rb, чтобы мы знали, как форма действия может подчиняться действию вашего контроллера. Возможно, чтобы избежать проблем с соглашениями об именах в рельсах, вы должны переименовать свою модель и контроллер Action в нечто вроде Mission или Activity.

Каким должен быть ваш params Хеш? Потому что всегда будут параметры [: action], которые в случае формы обычно равны create или update.

Далее, пожалуйста, попробуйте использовать встроенные методы рельсы, как:

# should be a POST method (am I right?) 
# why do you call it viewTask? 

def viewTask 
    @task = Task.find(params[:id]) 
    # you'd better avoid extra DB-calls 
    # @status = @task.status 
    # @activities = @task.actions 

    # you can load this with the @task-query by including or joining them 
    # if you need the @status and @activities models you could do 
    # @task = Task.find(params[:id], :include => [:task, :activities]) 

    # if you only need the joined objects you should use 
    @task = Task.find(params[:id], :joins => [:task, :activities]) 

    @activity = Activity.new 

    if params[:activity] 
    @activity = @task.activities.build(params[:activity]) 
    @activity.save 
    end 
end 

В коде, я предполагаю, что вы модель задачи выглядит следующим образом:

class Task < ActiveRecord::Base 
    has_many  :activities 
    belongs_to :status  # so it has a field called :status_id 
    ..... 
end 
+0

извините мои плохие объяснения .. спасибо, я переименую модель Action .. спасибо –

+0

неважно - начните тренироваться, и вы будете расти: D –

+0

thx для исправления кода моего ответа (плохая, плохая копия и вставка): D Все ли получилось? –

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