0

Railsアプリケーションでラジオボタンを使用しようとしています。現在、ボタンは期待どおりにページに表示されていますが、送信時に値が保存されていません。問題は実際には送信ボタンにあると思います。ボタンを押しても何も起こりません。

ラジオボタンのある私のページのコードは次のとおりです。

<div class="form_row>
<%= form_for @term, :url=>{ :action =>"update_status" } do |f| %>
  <%= f.radio_button :status, 'on' %><b>On</b> <br/>
  <%= f.radio_button :status, 'off' %><b>Off</b> <br/>
  <%= f.radio_button :status, 'leave' %><b>Leave</b> <br/>
  <div class="actions">
    <%= f.submit "Change term status" %>
  </div>
<% end %>
</div>

タイプミス(':actions to:action`)を修正しましたが、まだ機能していません。ここにいくつかの詳細があります...

ラジオボタンはページの上部にあり、フォームの残りの部分はそれらの下にあります。2つの異なる送信ボタンがあります。1つはラジオボタン用で、もう1つはページ下部の空白情報の入力用です。2番目のフォームは完全に機能しますが、[期間ステータスの変更]ボタン(を呼び出してラジオボタンを送信することになっているボタン)をクリックしてもupdate_status、何も起こりません。

これが私のページビューのすべてのコードです:

<h1> <%= @title %> </h1>

<div class="form_row>
<%= form_for @term, :url=>{ :action =>"update_status" } do |f| %>
  <%= f.radio_button :status, 'on' %><b>On</b> <br/>
  <%= f.radio_button :status, 'off' %><b>Off</b> <br/>
  <%= f.radio_button :status, 'leave' %><b>Leave</b> <br/>
  <div class="actions">
    <%= f.submit "Change term status" %>
  </div>
<% end %>
</div>

<%= form_for @term, :url=>{ :action=>"update" } do |f| %>     
  <div class="field">
    <%= f.label :course1, "Course 1" %><br />
    <%= f.text_field :course1 %>
  </div>
  <div class="field">
    <%= f.label :course2, "Course 2" %><br />
    <%= f.text_field :course2 %>
  </div>
  <div class="field">
    <%= f.label :course3, "Course 3" %><br />
    <%= f.text_field :course3 %>
  </div>
  <div class="field">
    <%= f.label :course4, "Course 4" %><br />
    <%= f.text_field :course4 %>
  </div>
  <div class="actions">
       <%= f.submit "Update" %>
  </div>
<% end %>

そして、ここに両方の​​定義があります:

 def update
    @term = Term.find(params[:id])
    @dplan=@term.dplan
    if @term.update_attributes(params[:term])
        flash[:success] = "Edit successful."
        redirect_to @dplan
    else
        flash[:success] = "Error"
        redirect_to @dplan
    end 
end 

def update_status
    @term = Term.find(params[:id])
    @dplan=@term.dplan
    if @term.update_attributes(params[:term])
        flash[:success] = "Term status changed."
        redirect_to @term  
    else
        flash[:success] = "Error"
        redirect_to @term 
    end 
end 

ありがとうございました!

4

2 に答える 2

2

http://railscasts.com/episodes/38-multibutton-formのおかげでそれを理解しました!1つのページで2つのフォームを使用しようとすると、何か奇妙なことが起こると思います。フォームを組み合わせるのが最善の方法ですが、用語コントローラーupdate定義でifステートメントを使用して2つのボタンを区別します。ご協力ありがとうございます!

于 2011-08-22T17:20:22.797 に答える
2

私はあなたの呼び出しに間違いがあると思います:それを使用するform_for代わりに。:url => { :actions => "update_status" }:url => { :action => "update_status" }

于 2011-08-21T18:38:24.230 に答える