1

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 %>

##ルート##

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'
4

1 に答える 1

0

あなたが何をしようとしているのか 100% はわかりませんが、ちょっと試してみましょう。

最初に目にするのは、最初の行の update_job で、Change オブジェクトを取得して @change に入れようとしているということです。問題は、明らかにまだ設定されていない @change.id を使用していることです。パラメータを介してIDを取得している場合は、次を使用します。

@change = Change.find(params[:id])

次に、Job の属性を更新しようとしていますが、Change オブジェクトがあります。これは機能しません。

あなたが全体的にやろうとしているのは、変更を更新し、その関連付けも更新するフォームを作成することです (この場合はジョブ)。これを行う方法の簡単なリンクは次のとおりです。

フォーム ヘルパー<--- ネストされた属性の検索の例

これが私が提案するコードです:

<%= form_for @change do |f| %>
  <%= f.fields_for :job do |j| %>
    Updated  : <%= j.check_box :updated %>
  <% end %>
<% end %>

これにより、更新されたオプションがparams[:change][:jobs_attributes]挿入され、 params[:change] を更新に送信する@change.update_attributes(params[:change])と、ジョブも更新されます。

于 2013-04-15T19:09:12.073 に答える