Лучше, я не знаю, еще меньше поскольку я не знаком с Objective C.
, Но основания C не так тверды учиться, это не очень сложный язык (с точки зрения синтаксиса, не с точки зрения освоения!), поэтому пойдите для него, это не будет напрасно тратиться время.
Лично, я думаю, что это всегда - хорошая идея изучить C, это дает хорошее понимание того, как компьютер работает. В конце концов, большинство языков и систем все еще записаны в C. Тогда идите дальше!:-)
пз.: "Движением" я не имел в виду, "отбрасывают его", просто "узнают больше, учатся отличающийся". Как только Вы знаете C, Вы никогда не могли бы отбрасывать его: JNI использования Java для вызова стандартных программ C для низкоуровневого материала, Python, Lua, и т.д. часто расширяется с помощью кода C (ссылка Lua даже просто принимает некоторое знание C для некоторых функций, которые являются просто тонкой оберткой к функции C позади), и так далее.
Вот источник вашей проблемы. Это устанавливает @project как экземпляр объекта TechDesign.
def edit
@project = Project.find(params[:id])
end
Вы можете убедиться, что все работает так, как вы хотите, указав: project для имени в вызове form_for.
<% form_for(:project, @project, :url => {:controller => "projects",:action => "update"}) do |f| %>
...
<%= submit_tag 'Update' %>
<% end %>
Случайное примечание: если вы используете наследование одной таблицы (STI) и забыли удалить initialize из определений вашего подкласса, вы получите аналогичное исключение «объект nil, которого вы не ожидали».
Например:
class Parent < ActiveRecord::Base
end
class Child < Parent
def initialize
# you MUST call *super* here or get rid of the initialize block
end
end
В моем случае я использовал свою среду IDE для создания дочерних классов, а среда IDE создала метод инициализации. Мне потребовалась вечность, чтобы выследить ...