0

Ruby on Rails は初めてで、次の問題があります:
コントローラーにメソッドがある場合:

def showbudgets
render :layout => false
username = session[:username]
time = Time.new
@budgets = Budget.findAll(username, time.year)
end

logger.debug を使用して確認したところ、@budgets で 2 つのレコードを取得しています。

私は次の見解を持っています:

<h2>Listing Budgets</h2>
<% if @budgets != nil %>
<table style="width:500px">
<tr>
<th>Year</th>
<th>Month</th>
<th>Amount</th>
</tr>
<% @budgets.each do |budget| %>
<tr>
<td><%= budget.budgetyear %></td>
<td><%= budget.budgetmonth %></td>
<td><%= budget.amount %></td>
</tr>
<% end %>
</table>
<% else %>
<br/>
No budgets set...
<% end %>

私は ajax リクエストを使用しているので、ビューにレイアウトを適用したくありません。行を削除すると、

render :layout => false 

それ以外の場合はレコードを表示します

4

2 に答える 2

1

「render」メソッドを呼び出すと、ビューがレンダリングされます。つまり、ビュー内に @budgets 変数が定義されていないため、null が返されます。

アクションの順序を変更する必要があるため、render は最後にあります。

于 2013-09-09T11:07:31.687 に答える