我正在rails中創建一個組合頁面。在頭版我有一個「關於」部分,我有我自己的個人描述。我希望能夠動態地改變它(不是硬編碼的HTML)。如何在視圖中修改控制器中的變量(ruby on rails)
我想描述一個文本變量或字符串,我可以通過視圖部分中的窗體進行修改。
問題 1.我應該如何在控制器中聲明這個變量? 2.如何從視圖中的窗體訪問並更改它? 3.我的問題有更好的解決方案嗎?
我正在rails中創建一個組合頁面。在頭版我有一個「關於」部分,我有我自己的個人描述。我希望能夠動態地改變它(不是硬編碼的HTML)。如何在視圖中修改控制器中的變量(ruby on rails)
我想描述一個文本變量或字符串,我可以通過視圖部分中的窗體進行修改。
問題 1.我應該如何在控制器中聲明這個變量? 2.如何從視圖中的窗體訪問並更改它? 3.我的問題有更好的解決方案嗎?
的只辦法做到這一點是要更新的值發送到控制器一個變量,得到了來自地方的內容。你需要有一個form
你的投資組合頁面上:
#config/routes.rb
resources :users do
resources :portfolios #-> url.com/users/:user_id/portfolios/:id
end
#app/controllers/portfolios_controller.rb
class PortfoliosController < ApplicationController
def show
@user = User.find params[:user_id]
end
end
#app/controllers/users_controller.rb
class UsersController < ApplicationController
def update
@user = User.find params[:id]
@user.update user_params
end
private
def user_params
params.require(:user).permit(:about)
end
end
#app/views/portfolios/show.html.erb
<%= form_for @user do |f| %>
<%= f.text_field :about %>
<%= f.submit %>
<% end %>
沒有任何更多的情況下,這是我能給的最好的。
您將需要連接數據庫以存儲和檢索動態內容。如果你使用@
來定義它,你可以在視圖中訪問一個變量;
@about= Me.last.about
其中我可能是您的模型,信息保存在和Me.last將是該模型的實例。您可以通過更新模型像
Me.last.update_attributes :about=> params[:about]
其中params[:about]
會從表單中的字段的PARAMS更新此信息。
我會推薦以下guide所以你會得到一個完整的解決方案。下面我介紹了用戶更新某些內容的主要步驟。此代碼不是完整的解決方案。
您的表單會將更新的內容提交給另一個控制器操作(通過其他路由)。
<%= form_for @user do |f| %>
在該控制器中,您將存儲內容(通常在數據庫中)。
def update
@user = User.find(params[:id])
@user.update(user_params)
redirect_to :back
end
原來的控制器動作會讓你存儲它
def show
@user = User.find(params[:id])
end