私はしばらくのうちにRailsを使用しておらず、クリアしたいものがあります。Railsコントローラの変数属性を変更できません
したがって、@
シンボルは、コントローラビュー内で変数がの変数にアクセスできることを示しています。正しい?
私はこれは私がルートに行く時はいつでも、ルート'/admin/user:id'
に行くために起こっていることを意味
get '/admin/user:id' to: 'admin#user'
ルートを持っている場合意味し、それはその中のすべての@variables
へのアクセスを持っていますコントローラ。正しい?
これは私が持っている小さな問題ですが、これは通常JavaScriptで単純なif-statement
になります。例えば
は、私がUser
モデルを持っていると言うと私は友人.first_name
、last_name
、favourite_food
と小さなFriend
の一覧を表示します。私はが場合、彼らは「ドンということですが
<h1><%= @user.name %>'s Friends List</h1>
<table>
<tr><%= @user.user_friends.first.friend.first_name %></tr>
<tr><%= @user.user_friends.first.friend.last_name %></tr>
<tr><%= @user.user_friends.first.friend.favourite_food %></tr>
</table>
マイ問題のようなものを持っているだけで、私のビューで、その後
def user
@user = user.find_by(:id => params[:id])
end
とを
admins_controllerをすることによって、これを表示することができます友人がいないので、すべてを "該当なし"に設定したい。これが私のコントローラーでどうやって起こったかです。
def user
@user = user.find_by(:id => params[:id])
if @user.friends.nil?
@user.user_friends.first.friend.name = "N/A"
@user.user_friends.first.friend.name = "N/A"
@user.user_friends.first.friend.name = "N/A"
end
end
私はそれが不要広いスコープの変数を作成するためによくないので、これはより良いアプローチだろうと想定しています、私は別の@variable
を作成することができると思いますが。
を行うビューでああ、私はこれを忘れてしまいました。ええ、私たちが持っているコントローラーは今のところ約60行ですが、数学や秒や日付などを変換するのは大変です。 – dsomel21
表示目的でのみ変換する場合は、そのロジックをビューに移動する必要があります、ビューヘルパーに)。 – Gerry
'user.find(params [:id])'は十分です – Iceman