2016-11-24 83 views
0

在我的應用我有單選按鈕的形式:RoR:如何從單選按鈕填充表格?

<%= form_for @homework.homework_students.homework_ratings do |f| %> 
    <label> 
    <%= f.radio_button :fb_value, '1', :fb_type, 'Difficulty' %> 
    </label> 
    1 
    <label> 
    <%= f.radio_button :fb_value, '2', :fb_type, 'Difficulty' %> 
    </label> 
    2 
    <label> 
    <%= f.radio_button :fb_value, '3', :fb_type, 'Difficulty' %> 
    3 
    </label> 
<%= f.button :submit %> 
<% end %> 

目的是填充兩列(所謂的「價值」和「類型」)爲表中的每個作業(不知道語法是正確的以上)稱爲其與稱爲表相關聯的 「homework_ratings」 「homework_students」:

homework_ratings.rb

belongs_to :homework_student, :class_name => 'HomeworkStudent', :foreign_key => :homework_student_id 

homework_students.rb

has_many :homework_ratings, :class_name => 'HomeworkRating' 
    belongs_to :homework, :class_name => 'Homework', :foreign_key =>  :homework_id, dependent: :destroy 

homework_students有許多家庭作業:

homework.rb

has_many :homework_students, :class_name => 'HomeworkStudent', dependent: :destroy 

homework_ratings表:

id     :integer   not null, primary key 
# homework_student_id :integer 
# type    :integer 
# value    :string(255) 
# created_at   :datetime   not null 
# updated_at   :datetime   not null 

homeworks_controller.rb

def show 
     @homework_ratings = HomeworkRating.all 
... 
end 

在正utshell我試圖從家庭作業中填充一張表,它與家庭作業沒有直接關聯,但是通過homework_students間接與上述關聯。

在嘗試加載頁面時出現錯誤「未定義的方法homework_ratings」。

任何想法如何最好地解決這個問題?

謝謝,可以提供更多信息...

+1

這不是答案,但是,我會爲字段名稱使用除'value'和'type'以外的內容,因爲這些將不可避免地與內置導軌方法衝突。 – court3nay

回答

1

簡化。你正試圖爲一件作業記錄評分,對吧?所以你創建了一個專用的評級控制器,你只需創建一個評級。總是嘗試從你正在創建的東西中提取資源。你的應用中應該有很多資源/控制器。

<%= form_for @homework_rating do |f| %> 
    <%= f.hidden_field :homework_student_id %> 

控制器:

def new 
    @homework_student = HomeworkStudent.find params[:homework_student_id] 
    @homework_rating = @homework.ratings.new 
end 

你可能也想看看作爲has_many :through

編輯:你不能設置一個單選按鈕,兩個值。但你可以在評分模型中創建一個編寫器方法

def set_values=(val) 
    self.type = "foo" 
    self.value = "bar" 
end 

然後你可以在val上做各種各樣的ruby,比如if或case。你需要想出一個在單選按鈕和模型動作之間進行通信的方式。

+0

謝謝,我做了你的建議,但得到這個錯誤:「表單中的第一個參數不能包含零或爲空」。我在作業中加載顯示視圖。 – Co2

+0

我正在嘗試基於你的指導。我認爲我的語法在單選按鈕的形式上是錯誤的,雖然參數的數量是錯誤的(4爲2..3) - 這是第一個單選按鈕... – Co2

+0

是的,因爲您需要設置實例變量@homework_rating,無論您是在渲染表單的任何操作,在您的情況下它不是新的。 – court3nay