开发者

Rails partial view set value of form field

Okay so I am quite new to Rails and am trying to do the following without success:

I have an Object (from my Active Record) containing a project, which contains n sub-projects, which contain n tasks. Now for each of these I want a partial view.

So I render from the project view the sub-project with the following code:

<%= render(:partial => 'subproject', 开发者_如何学Python:collection =>  @project.sub_projects) %>

Within my sub-project partial view called _subproject.rhtml (adding the code to a good ol Rails 1.2.3 project), so I can access the data like this:

<%= subproject.name %>

That will print out the name alright but when I try to generate a textfield this won't work:

<%= text_field 'subproject', 'name' %>

But this will:

<%= text_field 'subproject', 'name', :value => subproject.name %>

What am I doing wrong?


Edit: Changed title due to my problem is not passing the value but displaying it within a form field.


Edit2: As requested my controller code:

@project = Project.find(params[:id])


You can write this:

<%= render(:partial => 'subproject', :collection =>  @project.sub_projects) %>

as

<%= render :partial => @project.sub_projects %>

This will render every sub project with the sub_projects/_sub_project.html.erb partial. A little shortcut.

This:

<%= text_field 'subproject', 'name' %>

Says create a text_field called: subproject[name], but doesn't give it a value. You need to pass the value you want to set (the code that works).

The more idiomatic way of doing this now is with form_for:

<% form_for @subproject do |f| %> 
  <%= f.text_field :name %>
<% end %>

Or if you're using formtastic (https://github.com/justinfrench/formtastic), which is fantastic, you'd write:

<% semantic_form_for @subproject do |f| %> 
    <%= f.input :name %>
<% end %> 

I hope this helps!

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜