簡體   English   中英

Ruby-on-Rails中的跨控制器變量

[英]Cross Controller variables in Ruby-on-Rails

我有一個代碼視圖:

   <section>
  <h1>
    <%= render @client %>
  </h1>
  <h2>
    <%= render @client.telnumbers %>
  </h2>
  <h3>
    <%= link_to 'New Tel', new_telnumber_path, :locals => { :client => @client }, :remote => true %>
  </h3>
</section>

但是在我的電話號碼控制器中-變量@client-無我可以看到我的@client嗎?

我的電話號碼控制器:

class TelnumbersController < ApplicationController
  def new
    @telnumber = Telnumber.new
    @telnumber.client_id = @client.id 
  end

  def create
    @telnumber = Telnumber.new(params[:telnumber])
    render :action => :new unless @telnumber.save
  end
end

所以我有錯誤叫id為nil ...

我通過將變量添加到new_telnumber_path中來解決了

<%= link_to'New Tel',new_telnumber_path(:client_id => @ client.id),:remote => true,:class =>'btn btn-small'%>

在控制器中:

  def new
    @telnumber = Telnumber.new
    @client = Client.find(params[:client_id]) 
    @telnumber.client_id = @client.id 
  end

謝謝!

默認情況下,每個控制器都繼承自ApplicationController 您可以在此處放置一個before_filter ,以分配要在許多(或每個)控制器中使用的變量。

這是一個例子:

class ApplicationController < ActionController::Base
  before_filter :set_client

  private

  def set_client
    # set the @client variable: load client from session or whatever your app logic is
  end
end

您可以在此處閱讀有關Rails中控制器過濾器的更多信息: http : //guides.rubyonrails.org/action_controller_overview.html#filters

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM