0

私が持っている@test変数は、私が望む前に評価されています。ここに私が意図するものがあります: 私はその横に変数が表示されたボタン (今すぐリンク) を持っています。ページが最初にロードされたとき、値は「空白」となるはずです。そのボタンをクリックすると、ボタンがヘルパー メソッドを呼び出すため、ページが更新され、変数が別のものに変更されます。

これが私がhome.html.erbに持っているものです:

<%= link_to 'Do stuff', my_helper_method(), :method => :get %>
<%= @test %>

my_proj_helper.rb (ヘルパー メソッド) にあるものは次のとおりです。

module MyProjHelper
    def my_helper_method()
       @test = "changed"
    end
end

my_proj_controller.rb (コントローラー) には、次のようなものがあります。

class My_Proj_Controller < ApplicationController
    def home
        @test = "blank"
    end
end

私は物事を正しく行っていないに違いありません。何を変更する必要がありますか?

4

2 に答える 2

1

そのようなヘルパー メソッドは使用できません。できることは次のとおりです。

routes.rb でルートを作成します

   get '/some_path/:test_variable' => 'my_proj_controller#test_action', as: :test_action

次に、コントローラーで対応するアクションを作成します

   def test_action
     @test = params[:test_variable]
     render 'home'
   end

次に、リンクを変更します

    <%= link_to 'Link', test_action_path('change') %>

My_Proj_Controllerユーザーがリンクをクリックすると、ページからtest_variableパラメータを含む GET リクエストが送信されます。コントローラーはリクエストを受け取り、@test変数を設定してページをレンダリングしhome.html.erbます。

于 2013-02-05T23:25:12.110 に答える
0

クリックしたときにヘルパーメソッドをヒットしようとしていると思います。これは、ヘルパーメソッドの目的ではありません。renderhtmlのように、ビューまたはコントローラーで必要なことを実行するだけです。たとえば、「link_to」メソッドはヘルパーです。@test変数を必要に応じて変更する場合は、コントローラーに条件付きで値を設定するだけです。

link_toメソッドの2番目のパラメーターは、移動先のURLであると想定されています。メソッドの場合は、文字列を返す必要があります。この場合、文字列を返すメソッドを呼び出します。そのタグのahref= ""を見ると、href属性として「changed」が表示されます。

于 2013-02-05T23:22:56.030 に答える