【发布时间】:2013-04-15 17:00:37
【问题描述】:
对 Rails 相当陌生,这意味着我相信我已经掌握了大部分基础知识,但绝对是艺术系的学生。
我要完成的工作: 使用 form_for 将参数附加到现有表单。
因此,我需要找到现有表单的 id 并使用 JobsController 将新的哈希传递给该表单以附加几列数据。
步骤是从 select_box 中选择作业编号,使用 text_fields/check_boxes 为该作业添加任何更改/注释,然后提交。使用的视图也是部分视图,可在视图/作业中找到。
当前的问题,尽管多次尝试,是:
覆盖默认的'post' 方法——尝试了以下几种组合:method => 'put'、:action => update, :controller => :jobs强>
class Job < ActiveRecord::Base
attr_accessible :note, :twgid, :padd, :lnkbr, :txtwr, :datewr, :pinmiss, :headch, :name, :nucopy, :minrend, :majrend, :lnkwr, :gmail, :hotmail, :aol, :outlook, :note, :linkwr
belongs_to :form
end
JobsController:
( scaffolded )
View: (jobs/_form.html.erb)
<%= form_for @job do |f| %>
<fieldset>
<div class="form-horizontal">
<div class="control-group">
<span class="control-label">
<%= f.label :name, "TWGID" %></span>
<%= f.select :name, options_from_collection_for_select(Job.all, :name, :name), :prompt => 'Select' %>
</fieldset>
<fieldset>
<div class="control-group">
<span class="control-label">
<%= f.label :padd, "Add Padding?" %></span>
<%= f.check_box :padd %>
<%= f.hidden_field, :updated, :value => '1' %>
<% end %>
##Routes##
get 'signup', to: 'users#new', as: 'signup'
get 'login', to: 'sessions#new', as: 'login'
get 'logout', to: 'sessions#destroy', as: 'logout'
resources :sessions
resources :users
resources :forms
resources :projects
resources :jobs
root :to => 'forms#index'
【问题讨论】:
-
最后一条评论:奇怪的是,我的模型是嵌套的,所以通常我会使用 f.fields_for :jobs,但这不会产生我认为我需要的 params 哈希,我从: fields_for :job,即 "job"=>{"updated"=>"1"}
-
如果你在关联上使用 fields_for 你应该得到一个看起来像这样的哈希
"jobs_attributes"=>{[0]=>{"updated"=>"1"}}只要你有accepts_nested_attributes_for,Rails 就会知道如何处理它,我看到你这样做 -
是的,问题是我使用“更新”操作的方式——通常
form_for @change会自动选择适当的 http 操作,但是我正在尝试将属性附加到现有的使用'put'形成表单,尝试使用form_for和fields_for的各种组合传递:method => "put"——无论哪种方式,我都会得到创建新记录的默认“发布”操作或错误——所以,此时,我已将“更改”属性迁移到“作业”并创建了一个作业控制器——我正在尝试:使用 form_for 查找现有记录并附加属性
标签: ruby-on-rails-3 twitter-bootstrap boolean form-for