我試圖使用text_field窗體幫助器,但它不工作。這裏是我的形式Ruby on Rails窗體與可選字段
<%= form_for @score do |f| %>
<%= f.hidden_field :site_id %>
<%= f.select(:value, (1..10).to_a) %>
<%= f.text_field :response %>
<%= f.submit "Submit" %>
<% end %>
當我運行這個地方,我得到一個NoMethodError爲:response
。 Response
是我剛剛添加的score
的屬性,所以問題可能在於此。
這是我的score_controller
看起來像此刻
def create
@score = Score.create(score_params)
respond_with @score
end
def new
@score = Score.new(site: Site.find(params['site_id']))
end
private
def score_params
params.require(:score).permit(:value, :response, :site_id)
end
現在response
不會是一個必填字段,用戶可以離開響應空白,如果他們想。或者至少這就是我想要的那樣。我是新來的鐵軌;這是我第一個使用它的項目。
感謝
編輯:這是我的成績表,用錯誤一起
create_table "scores", force: :cascade do |t|
t.integer "value", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "site_id"
t.string "response"
end
錯誤:
NoMethodError at /scores/new
undefined method `response' for #<Score:0x007ff293567790>
Did you mean? respond_to?
EDIT2:創建在軌臺新的得分
s = Score.new
=> #<Score:0x007fbec9001448 id: nil, value: nil, created_at: nil, updated_at: nil, site_id: nil, response: nil>
Edit3 :@score from new
action
[1] pry(#<ScoresController>)> @score.inspect
=> "#<Score id: nil, value: nil, created_at: nil, updated_at: nil, site_id: 130>"
[2] pry(#<ScoresController>)>
你確定'response'是'score'的''屬性?你能用分數表模式更新問題嗎? – Pavan
您是否運行遷移?耙db:遷移? – Ursus
我在分數表中添加了我的分數表 – Spance