开发者

Ruby on Rails - passing hashes

I have a piece of controller code where some values are calculated. The result is in the form of an array of hashes. This needs to get into a partial form somehow so that it may be retrieved later during commit (which is through t开发者_StackOverflow中文版he Submit button).

The questions is how do we pass the array of hashes? thanks.


Is there a reason it has to be through the form? This is the type of thing I usually use the session for.

I can't really think of a nice way to do what you're asking with forms. I guess you could create hidden fields for each key in your hash in the form with hidden_field_tag as an alternative. Then you run into problems translating it (what if a key's value is an array or another hash?).

You could easily store the hash in the session and then on each page load, check to see if there is a hash where you expect it. On calculating values:

session[:expected_info] = results

And each page load, something like this:

if session.has_key?(:expected_info)
  results = session.delete(:expected_info)
  # you already calculated the results, just grab them and
  # do what you need to do
else
  # you don't have the expected info 
end


You should be able to pass it as a string to your partial:

[{}].inspect

and eval it when it is submitted back through the form:

eval("[{}]"))

but that would be really dirty…

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜