Thijs
Thijs

Reputation: 387

html5 in rails3 views

I have a view with some embedded ruby in it... i want to insert a cell <td></td> into it, but when i do that it gives several error messages? This is because i concatenate a text field and a submit button into the embedded ruby.

This is my code:

<table>
<% for answer in @question.answers %>
        <tr>

         <!-- this displays all the possible answers -->
        <td>
          <%= answer.text %>
        </td>

        <% if current_user.can_vote_on? (@question) %>  <!-- if a current user has not yet voted.. -->
        <td>  <%= form_tag('/vote', :method => "post") do
              hidden_field_tag('vote[answer_id]', answer.id) +
              submit_tag("Vote")    
            end %>    <!-- vote button.. -->
        <% end %>
        </td>
      </tr>
<% end %>

       <% if current_user.can_vote_on? (@question) %> <!-- this shows a answer text field -->
           <tr>
            <td>
            <%= form_tag('/vote/new_answer', :method => "post") do
              hidden_field_tag('answer[question_id]', @question.id) +
              hidden_field_tag('answer[user_id]', current_user.id) +
              text_field_tag('answer[text]')  + <!-- in here i want an extra </td><td> tag -->
              submit_tag('Vote')
            end %>
            </td>
          </tr>
       <% end %>

My question is: how can i exit the embedded ruby and at the same time staying in the concatenated string...? I want to add the </td> and the <td> after the text_field_tag('answer[text]')

I tried this:

<td>
        <%= form_tag('/vote/new_answer', :method => "post") do %>
        <%= hidden_field_tag('answer[question_id]', @question.id) %>
        <%= hidden_field_tag('answer[user_id]', current_user.id) %>
        <%= text_field_tag('answer[text]') %>
        </td>
        <td>
        <%= submit_tag('Vote') %>
        <% end %>
        </td>

And it works!

Thijs

Upvotes: 0

Views: 262

Answers (2)

Jeffrey W.
Jeffrey W.

Reputation: 4169

Simple answer: It's not possible.

I suggest you try a different approach such as using divs inside your td elements. If I were you I wouldn't concatinate the strings together.

<%= form_tag('/vote/new_answer', :method => "post") do %>
  <%= hidden_field_tag(answer[question_id], @question.id %>
  ... so on ...
  <div class="position_it_somewhere_with_this_class"><%= submit_tag("vote") %></div>
<% end %>

Upvotes: 1

corroded
corroded

Reputation: 21564

You don't concatenate tags!

Also you don't use divs in table rows. put the classes in your tds ...

   <%= form_tag('/vote/new_answer', :method => "post") do %>

    <%=  hidden_field_tag('answer[question_id]', @question.id) %>
    <%=  hidden_field_tag('answer[user_id]', current_user.id) %>
    <%=  text_field_tag('answer[text]') %>
    <%= submit_tag('Vote') %>
   <% end %>

  </td>
</tr>
..

Upvotes: 0

Related Questions