1

Ruby on Rails は初めてで、送信ボタンがクリックされるたびに値をユーザーの IP アドレスに設定するデバイス属性 (lastChangedBy) を更新しようとしています。私は次のようなことをしたかった:

 <%= form_for(@device) do |f| %>
 .
 .
 .
 <%= if click? ( f.submit "Commit Entries", class: "btn btn-primary" ) == true %>    
      <%= @device.lastChangedBy = request.remote_ip %>
 <% end %>

しかし、それは不可能だと思います。「button_to」の使用を検討していますが、オンラインで検索した後、使用方法が非常にわかりません。私は次のようなことをしてみました:

 <%= button_to "Commit Entries", action: "setIp" %>

次に、DevicesController と helper.rb で (メソッドを呼び出す場所がわからなかったため)、単純なメソッドを作成しました。

 def setIp
      Device.find(params[:id])
  @device.lastChangedBy = request.remote_ip
 end

しかし、私は完全に迷っています。誰かが私を助けてくれませんか。具体的だったらすごい!

4

2 に答える 2

1

すでにフォームを送信していて、そのパラメーターを設定したい場合は、コントローラーで行います。

class DevicesController < ApplicationController

  def update
    @device = Device.find(params[:id])
    @device.last_changed_by = request.remote_ip # Tada!
    if @device.update_attributes(params[:device])
      redirect_to @device
    else
      render 'edit'
    end
  end

end

アプリケーションに応じて微調整しますが、それが基本的な考え方です。

于 2013-09-25T19:22:49.767 に答える